系统采用同城双活部署,但一次机房级故障切换 RTO 远超预期,请从流量切换、数据同步、依赖拓扑和演练角度分析改进点。
旗舰版来源:alibaba中级工程师异地多活数据同步容灾演练机房级故障切换同城双活
草稿
答案解析
我会先把这个问题拆成两类:一类是“切不过去”,另一类是“切过去之后服务不可用或恢复很慢”。同城双活理论上 RTO 应该比较低,如果机房级故障切换远超预期,通常说明流量、数据、依赖和演练几个环节没有真正做到可切、快切、可验证。
流量切换方面
流量切换是最直接影响 RTO 的地方。
首先要看入口流量是不是还依赖人工切换,比如手动改 DNS、手动调整 SLB 权重、手动发布配置。如果 DNS TTL 设置过长,或者客户端、运营商、本地 DNS 有缓存,实际生效时间会远大于预期。
比较理想的做法是:
入口层支持自动摘除故障机房,比如 GSLB、DNS、SLB、API Gateway 能基于健康检查自动切流; DNS TTL 要控制在合理范围,核心业务尽量不要完全依赖 DNS 生效; 通过全局流量调度或四/七层负载均衡做权重切换; 客户端、网关、SDK 要支持失败重试和快速熔断,避免一直打到故障机房; 切换策略要分级,比如先切只读流量,再切核心写流量,或者按业务、按租户、按地域分批切。
另外要关注健康检查的准确性。有些系统只检查端口存活,但应用线程池打满、
登录后查看完整内容
