主备与双活的差别
高可用入口有两种常见模型。主备:一个入口承载全部流量,另一个待命,故障时靠 DNS 或全局流量管理把解析切过去,切换生效时间取决于缓存收敛速度。双活:多个实例或多个可用区同时承载流量,故障时自动摘除异常一侧,切换平滑但对数据一致性与会话处理提出要求。
基本信息
| 主备模型 | 备侧平时不承载流量,成本低但切换有窗口 |
|---|---|
| 双活模型 | 多实例或多可用区同时分流,容量利用率高 |
| 切换手段 | DNS 解析切换、全局流量管理健康检查、负载均衡自动摘除 |
| 关键前提 | 备侧配置与主侧保持一致,且经过演练 |
| 影响项 | 解析 TTL 决定主备切换的生效时间 |
典型使用场景
- 同城双可用区部署,用负载均衡天然分摊并自动摘除异常区
- 跨地域容灾,通过全局流量管理按健康状态切换解析
- 成本敏感型业务用主备,备侧低配待命,故障时临时升配
- 合规要求两地三中心时,评估双活与主备的组合方案
- 演练场景:主动断开一侧验证切换时间与数据一致性
模型对照
| 模型 | 特点 | 切换手段 |
|---|---|---|
| 主备 | 备实例平时不承载流量 | DNS 切换或全局流量管理健康检查 |
| 双活 | 多实例或多可用区同时分流 | 故障时自动摘除异常一侧 |
| 同城双活 | 两个可用区同时承载 | 负载均衡的多可用区能力 |
| 异地多活 | 多地同时承载写入 | 依赖数据同步与应用层路由 |
切换前降低解析 TTL
切换前降低解析 TTL
dig +short record.example.com @ns1.example.com # 核对当前解析与 TTL
# 预切换前把 TTL 调低,故障发生时客户端收敛更快
# 切换后持续观察
for i in 1 2 3; do dig +short record.example.com @8.8.8.8; sleep 30; done依赖 DNS 做主备切换时,客户端与各级递归缓存会按 TTL 延迟跟随;TTL 过长时,故障已经恢复解析可能还没切换完。
双活对数据层要求更高:数据库写入、缓存与文件存储都要能跨可用区或跨地域保持一致,否则切换后会出现数据分叉。