摸鱼时偶然刷到一个 RAID(独立磁盘冗余阵列)的视频,里面演示了 RAID1 坏掉一块硬盘后数据依然可用,突然灵光一闪——

我们最近搭的游戏服务器,几乎没有任何冗余方案。能不能也搞一套架构,让主节点彻底挂掉之后,服务还能继续跑?

说干就干,跟 DeepSeek 聊了聊技术细节,开始琢磨高可用架构。

现有环境: 阿里云(北京 / 杭州)两台 + 本地高性能服务器一台(无公网)。

方案一:双热备

两台本地服务器互为备份,一台挂掉另一台自动顶上。思路很美,现实很骨感——现在内存硬盘涨疯了,根本买不起第二台,Pass。

方案二:主备入口 + 本地主服务 + 云上备份

主节点故障时,由两台阿里云服务器接管全部业务。方向没问题,但主业务体量太大,那两台阿里云根本拉不动,Pass。

方案三:阿里云临时高性能节点

主节点挂掉时,在阿里云按量付费开一台临时高性能 ECS,切过去顶上。数据通过 OSS 存储桶同步,也可以用 sync 同步到杭州节点。

查了一下价格:32vCPU | 64GiB,¥6.197/时,临时流量 0.8 元/GB。作为应急方案技术上可行,但流量是大头,费用不太能接受。主打一个能省则省,Pass。

现有的冗余方案是一台主节点 + 两台互备的 Frp 节点,架构如下图:

现有架构图

三个方案全被否了。那到底该怎么搞——既要省钱,又要高性能?

在讨论 DNS 如何自动解析到临时节点 IP 的时候,突然蹦出一个想法:为什么要动 DNS?

换个思路——在阿里云开一台和杭州节点同区的临时 ECS,直接走内网,以杭州节点作为出口对外提供服务。这样既不用购买公网流量,还能复用杭州节点的 200Mbps 带宽。万一杭州节点也挂了,再临时开通流量兜底。

理论可行,开干。架构如下图:

新架构图

先拿北京节点跑一遍验证:

新建同区 ECS → 配置内网互通 → 部署 Frp → 访问测试

测试结果

实践成功!!!

最终架构图

这张图画了很久,但目前只是一个大致的框架。实际落地还需要考虑数据库同步、Bot 程序、自动化部署脚本等很多方面。

写到这里突然想到:能不能通过 Docker 拉取镜像,一键部署整套数据和服务?

要是真能跑起来,那就又是一个值得记录的故事了。

本文由 zentx 编写,经 Claude Code 润色优化。