4. AWS灾备策略全景

在AWS上做灾备,最容易犯的错误不是“没做备份”,而是“所有业务都用同一种灾备策略”。一个内部报表系统和一个支付交易系统,对RTO(恢复时间目标)和RPO(恢复点目标)的要求可能相差几个数量级,如果都用多站点主动-主动,成本会失控;如果都用备份与恢复,核心业务又扛不住。因此,理解四种主流灾备策略的成本与恢复能力差异,是设计业务连续性方案的核心功课。

这四种策略可以按“恢复能力从低到高、成本从低到高”排成一条连续谱:备份与恢复(Backup & Restore)→ Pilot Light(领航灯)→ 温备(Warm Standby)→ 多站点主动-主动(Multi-Site Active/Active)。它们并不是互斥的四选一,而是同一套AWS能力(AMI、快照、CloudFormation、Route 53、Auto Scaling、Aurora Global Database、DynamoDB Global Tables等)在不同“预热程度”下的组合。理解这条谱系,比记住四个名词更重要。

AWS 四种灾备策略:成本 ↔ 恢复能力连续谱 左侧成本低、RTO/RPO 大;右侧成本高、RTO/RPO 趋近于零 成本 / 恢复能力 → ① 备份与恢复 Backup & Restore 灾备区状态 仅存 S3 快照 / AMI 无运行中的计算资源 典型 RTO / RPO RTO:数小时~1天 RPO:数小时 相对成本 最低(约 1x) 适用场景 内部系统、报表、 开发测试、合规归档 关键服务 AWS Backup · S3 · EBS 快照 ② Pilot Light 领航灯 灾备区状态 核心数据持续复制 计算资源最小化/停止 典型 RTO / RPO RTO:数十分钟~数小时 RPO:分钟级 相对成本 较低(约 2~3x) 适用场景 一般业务系统、 可容忍短暂中断 关键服务 Aurora 跨区副本 · AMI · CFN ③ 温备 Warm Standby 灾备区状态 全栈已部署但缩容 随时可扩容接管 典型 RTO / RPO RTO:分钟级 RPO:秒级~分钟级 相对成本 中等(约 4~6x) 适用场景 重要业务系统、 要求分钟级恢复 关键服务 ASG 缩容 · Route 53 故障转移 ④ 多站点主动-主动 Multi-Site Active/Active 灾备区状态 多区同时承载生产流量 双向数据同步 典型 RTO / RPO RTO:秒级~近零 RPO:近零 相对成本 最高(约 8~10x+) 适用场景 支付、交易、 核心在线业务 关键服务 DynamoDB Global Tables · Aurora Global 选择依据:先定 RTO/RPO 目标 → 再算可接受成本 → 最后匹配策略,而非反过来

一、备份与恢复:最便宜,也最慢

备份与恢复的核心思路是:生产环境正常运行,灾备区只保存数据副本,不保留任何运行中的计算资源。典型实现是用 AWS Backup 统一编排 EBS 快照、RDS 自动快照、S3 版本控制与跨区域复制,把备份集中存放在灾备区域的 S3 桶或备份保管库中。发生灾难时,从快照恢复卷、从 AMI 启动 EC2、重建数据库,再把 DNS 切过去。

它的成本最低,因为灾备区几乎不产生计算费用,只有存储和跨区域数据传输费用。代价是恢复过程需要人工或脚本介入,RTO 通常在数小时到一天,RPO 取决于备份频率,可能是数小时。适合内部报表、开发测试、合规归档这类中断几小时也不影响业务的系统。

二、Pilot Light:只点亮“领航灯”

Pilot Light 的名字来自燃气热水器的常明火——灾备区只保留最核心、最难重建的部分持续运行,其余部分保持“可快速启动”的状态。最典型的做法是:数据层持续复制(如 Aurora 跨区域只读副本、DynamoDB 全局表),而应用层只保留 AMI、启动模板和 CloudFormation 模板,不运行 EC2 实例。

切换时,用模板在灾备区批量拉起应用服务器,把 Aurora 副本提升为主库,再切换 Route 53。相比备份与恢复,它省去了“从快照重建数据”这段最耗时的过程,RTO 可以压缩到数十分钟到数小时,RPO 降到分钟级。成本约为备份与恢复的 2~3 倍,主要花在数据层持续复制上。

三、温备:全栈就绪,只差扩容

温备可以理解为“Pilot Light 的加强版”:灾备区不仅数据在同步,应用栈也已经完整部署并处于运行状态,只是规模被压到最小。例如生产区跑 10 台 EC2,灾备区只跑 2 台;生产区 Aurora 有 4 个读副本,灾备区只有 1 个。所有配置、安全组、负载均衡器、Auto Scaling 组都已就位。

故障发生时,不需要新建任何资源,只需把 Auto Scaling 组的期望容量调大、把 Aurora 副本提升为主库、切换 DNS。因为省去了资源创建和启动时间,RTO 可以做到分钟级,RPO 为秒级到分钟级。成本约为备份与恢复的 4~6 倍,因为灾备区始终有一份缩容但真实运行的基础设施。温备是大多数“重要但非核心”业务系统的性价比甜点区。

四、多站点主动-主动:成本最高,恢复能力最强

主动-主动模式下,两个或多个区域同时承载生产流量,用户请求通过 Route 53 延迟路由、加权路由或 Global Accelerator 分发到最近或最健康的区域。数据层使用支持双向同步的服务,如 DynamoDB Global Tables、Aurora Global Database 的写转发,或自建基于 Kafka 的双向复制。任一区域故障,流量在秒级内被摘除并导向健康区域,RTO 接近零,RPO 也接近零。

但它的复杂度和成本也最高:需要处理跨区域数据冲突(如最后写入获胜、版本向量)、保证幂等性、统一时钟与序列号、设计全局唯一的 ID 生成,还要应对“脑裂”风险。成本通常是单区域的 8~10 倍以上,因为两个区域都要按生产规模运行。只有支付、交易、核心在线业务这类中断即造成重大损失的场景才值得投入。

五、如何选:从 RTO/RPO 反推策略

选择策略的正确顺序是:先由业务方确认可接受的 RTO 和 RPO,再评估预算上限,最后匹配策略。下面这张对照表可以作为选型起点(成本倍数为相对单区域生产环境的经验估算,仅用于教学示例,实际以账单为准):

策略 灾备区状态 典型 RTO 典型 RPO 相对成本 典型场景
备份与恢复 仅快照/AMI 数小时~1天 数小时 约 1x 内部报表、归档
Pilot Light 数据层常驻,计算层待启 数十分钟~数小时 分钟级 约 2~3x 一般业务系统
温备 全栈缩容运行 分钟级 秒级~分钟级 约 4~6x 重要业务系统
多站点主动-主动 多区同时承载流量 秒级~近零 近零 约 8~10x+ 支付、交易核心
一个常见误区是“所有系统都上主动-主动才安全”。实际上,把非核心系统也做成主动-主动,不仅浪费预算,还会因为跨区域数据冲突引入新的故障模式。更务实的做法是分层:核心交易走主动-主动,重要业务走温备,一般系统走 Pilot Light,内部系统走备份与恢复,用省下来的预算加强核心链路的演练与监控。
无论选择哪种策略,都必须定期做真实切换演练。很多团队纸面上是温备,实际切换时才发现 AMI 已过期、IAM 角色在灾备区不存在、安全组规则没同步、Route 53 健康检查阈值设置过长。建议至少每季度做一次非生产环境的完整切换,记录实际 RTO 与目标 RTO 的差距,并据此调整策略或修复配置。

最后要强调:这四种策略不是一次性选择,而是可以随业务演进的。一个系统上线初期用备份与恢复,随着业务重要性提升,逐步升级到 Pilot Light、温备,最终在成为核心链路时升级为主动-主动。关键是让策略与业务价值、RTO/RPO 目标、预算三者保持动态匹配,而不是一开始就追求最高配置。