单一数据中心就是单点故障。电力事件、制冷故障、光纤被挖断或提供商故障都可能让整个设施离线。跨两个数据中心建设可以消除这种单一依赖,但也会引入围绕数据一致性、故障转移自动化和网络设计的复杂性。
本文比较主备与双活设计,并阐述每种设计所需的实际决策。
主备(Active-Passive):更简单但更慢
在主备设计中,一个数据中心承载生产流量,另一个保持待命状态。如果主站点发生故障,流量将被重定向到备用站点。
优势
- 应用和数据库架构更简单
- 正常运行期间没有脑裂(split-brain)风险
- 备用站点在需要之前可以按较小规模配置
- 数据一致性更容易保证
劣势
- 故障转移需要检测、决策和流量重定向
- 恢复点目标(RPO)取决于复制延迟
- 备用容量可能不足以应对突发切换
- 正常运行期间一半的基础设施处于闲置状态
当以分钟计的停机时间可以接受、闲置容量的成本可以容忍时,主备设计是一个不错的选择。
双活(Active-Active):更快但更难
在双活设计中,两个数据中心同时承载流量。用户可以被路由到最近的站点,也可以在两个站点之间做负载均衡。
优势
- 更高的总容量,以及为分布式用户提供更低的延迟
- 没有大量闲置备用资源
- 单个站点故障只会降低容量,而不会造成全面停机
- 可以为维护逐步排空流量
劣势
- 需要实时数据同步或应用层分区
- 并发写入的冲突解决
- 更复杂的网络路由和健康检查
- 对运维成熟度要求更高
当持续可用性和地理分布是核心需求时,双活是正确的选择。
主备与双活的对比
| 因素 | 主备 | 双活 |
|---|---|---|
| 复杂性 | 较低 | 较高 |
| 故障转移速度 | 数分钟到数十分钟 | 数秒到数分钟 |
| 资源利用率 | 一个站点基本闲置 | 两个站点都在产出 |
| 数据一致性 | 更容易保持 | 需要冲突处理 |
| 最佳适用场景 | 以灾难恢复(DR)为重点的工作负载 | 全球化、对延迟敏感的服务 |
网络与数据方面的考量
无论采用哪种模式,两个数据中心都需要可靠的互联链路和清晰的数据策略。关键决策包括:
- 用于站点间复制的专用暗光纤、波长或 MPLS 链路
- 用于用户流量调度的 DNS 或任播(anycast)路由
- 根据距离和延迟选择同步复制还是异步复制
- 在网络分区期间避免脑裂的仲裁(quorum)机制
站点之间的距离会影响延迟,进而决定同步复制是否可行。超过几十毫秒之后,大多数组织会选择异步复制,并接受一个较小的恢复点目标。