
2026 年 9 月 29 日,狗急加速器宣布香港、东京、新加坡三个核心区域完成双活机房互备:同城两个机房同时承载业务,任一机房故障时流量在 0.9 秒内切到另一侧,会话不中断。9 月 20 日的全链路演练中,用户无感率达到 97.8%,核心线路可用率由 99.94% 提升到 99.98%。
做这件事的直接原因是 8 月 17 日的一次故障。当天 14 时 22 分,香港主机房所在楼宇的 UPS 出现电压抖动,两台核心交换机的电源模块先后重启,业务不可用持续 4 分 12 秒,影响 2.3 万次连接。事后复盘发现,备用机房虽然存在,但切换需要人工确认路由宣告,实际切过去用了 3 分 40 秒。
单机房架构下,故障影响的不只是断线,还有会话恢复。用户重新连接时要重新握手、重新鉴权、重新选路,三步加起来 2.4 秒以上;如果故障发生在晚高峰,重建连接还会挤在同一时刻,形成二次拥塞。8 月 17 日的事故里,恢复后的 90 秒内有 6100 次连接同时重试,线路负载瞬时冲到 87%。
更隐蔽的问题是状态丢失。旧架构的会话表只存在单机房的接入层,切到备用机房后所有长连接都失效,正在播放的视频需要重新缓冲,正在开会的用户需要重新入会。用户感知到的不是「切换了 4 分钟」,而是「会议断了,我重进了一次」,这种体验损失比数字本身更严重。
双活的实现分两层。路由层用 BGP 向两个上游同时宣告同一网段,正常时按 AS Path 与 MED 值分配流量比例 7:3;检测到主侧实例连续 3 次健康检查失败(间隔 100 毫秒),就撤掉主侧宣告,流量在 0.9 秒内收敛到备侧。会话层每 50 毫秒同步一次加密上下文与 NAT 映射,切换后连接沿用原有密钥,不需要重新握手。
「双活不是把机器摆两份,而是把状态同步做到用户察觉不到。我们宁可多花带宽同步会话表,也不愿让用户重进一次会议。」
—— 狗急加速器运维总监 汤亦寒
同步通道本身也做了保护:两条独立的光纤路径加一条 5G 备份,同步数据不落盘、不跨区域传输,只在同城机房之间流动。为避免脑裂,两个机房共享一套仲裁节点,网络分区时以仲裁结果为准,宁可一侧停止服务也不让两边同时写会话,这样最多损失 0.9 秒的会话增量。

9 月 20 日凌晨 3 时进行全链路演练,主动切断香港主侧机房的上行链路 5 分钟。监测数据显示:业务中断 0.9 秒,切换期间丢包率 0.02%,重连用户占比 2.2%,其中 97.8% 的用户没有主动操作客户端。东京与新加坡两个区域同期完成演练,切换耗时分别为 1.1 秒与 1.0 秒。
演练后两周的线上数据:核心线路 30 天可用率 99.98%,较上一周期的 99.94% 提升 0.04 个百分点,折算成不可用时长由 26 分钟降到 8.6 分钟。会话同步带来的额外带宽占用约为总流量的 3.1%,高峰时段双机房 CPU 负载差控制在 12 个百分点以内,没有出现一侧过载。
成本侧也做了记录:双活让机房资源利用率下降约 18%,但换来的是故障时无需人工介入。按 8 月 17 日事故的规模推算,同样的故障在今天最多影响 2200 次连接,且不需要用户重新登录,工单量预计下降 84%。
2027 年上半年计划把双活扩展到三地三活:在现有香港、东京、新加坡的基础上,增加法兰克福与洛杉矶的区域互备,形成跨大洲的第三副本。目标是把单点故障的恢复时间压到 0.5 秒以内,并把会话同步的带宽开销控制在 5% 以内。
对用户来说,这一切不需要任何操作。客户端会自动感知接入侧的变化,线路列表里的可用节点数量不会因为机房维护而减少。我们也会把每次演练的时间与结果发布在资讯中心,让稳定性这件事可被验证,而不是只靠一句承诺。
8 月那次确实断了,会议重进了两次。现在看到做了双活,心里踏实不少。
演练数据敢公开挺好,0.9 秒切换基本没人能感觉到,希望以后每次演练都发一下。
做运维的懂,会话同步比切换本身难多了,这个方案做得扎实。
最近一周没再遇到掉线,晚高峰也稳,继续观察。
成本利用率下降 18% 但换来可靠性,这笔账算得值。
希望海外区域也早点做,欧洲这边偶尔还是会碰到单点维护。