1. 课程导入与全局认知
在开始动手搭建任何跨区域架构之前,我们需要先建立一套共同的判断标准:什么样的系统才算"高可用",什么样的系统才算"能容灾",以及我们凭什么说它达到了目标。很多团队在灾备项目上投入巨大,却因为一开始没有把目标量化清楚,最终做出来的架构既昂贵又无法通过真实故障的检验。本节的任务,就是把业务连续性的语言翻译成 AWS 架构的语言。
一、高可用与灾备不是同一件事
高可用(High Availability, HA)关注的是"系统在正常运行期间尽量不中断",它的典型手段是冗余、健康检查、自动故障转移,目标是把故障恢复时间压缩到秒级或分钟级,并且对用户几乎无感。灾备(Disaster Recovery, DR)关注的是"当一整个可用区甚至一整个区域失效时,业务还能不能恢复",它允许更长的中断时间,但要求数据不丢或只丢很少一部分。
两者的关键差别在于故障域(Failure Domain)的层级。单可用区内部署多台实例,只能抵御单机故障;跨可用区部署,可以抵御机房级故障;而跨区域部署,才能抵御区域级灾难,例如大范围电力中断、区域网络隔离或区域性服务异常。本课程讨论的重点,就是最后这一层——多区域。
二、用 RTO 与 RPO 把目标变成数字
业务连续性有两个最核心的指标,它们决定了架构的复杂度和成本:
- RTO(Recovery Time Objective,恢复时间目标):从故障发生到业务恢复可用的最长可接受时间。RTO 为 15 分钟,意味着架构必须能在 15 分钟内完成流量切换和数据接管。
- RPO(Recovery Point Objective,恢复点目标):故障发生时最多可接受丢失多长时间的数据。RPO 为 5 分钟,意味着数据复制机制必须保证任意时刻两地的数据差距不超过 5 分钟。
这两个指标不是技术指标,而是业务指标。它们应当由业务方给出,再由架构师翻译成技术方案。一个常见的误区是"RTO 越短越好",实际上 RTO 从 4 小时压缩到 15 分钟,成本可能上升数倍。合理的做法是先分级:核心交易系统 RTO 15 分钟、RPO 1 分钟;报表分析系统 RTO 8 小时、RPO 1 小时。分级之后,不同系统采用不同的灾备策略,整体投入才可控。
三、AWS 全球基础设施:故障域的物理基础
AWS 的全球基础设施由区域(Region)、可用区(Availability Zone, AZ)、边缘站点(Edge Location)等层级构成。区域之间在地理上相互隔离,拥有独立的电力、网络和控制系统;一个区域内通常包含 3 个或更多可用区,AZ 之间通过低延迟专用光纤互联,物理距离足以避免同一灾害同时影响两个 AZ。
理解这个层级,才能理解"多区域"到底意味着什么:跨 AZ 是同一区域内的冗余,延迟通常在毫秒级,适合做同步复制和自动故障转移;跨 Region 是地理级冗余,延迟通常在几十毫秒到数百毫秒,同步复制代价高,因此多采用异步复制。这也是为什么多区域架构中,RPO 往往由复制延迟决定,而 RTO 往往由流量切换和资源启动速度决定。
四、四种典型灾备策略与成本曲线
把 RTO/RPO 目标落到架构上,业界通常归纳为四种策略,按成本和恢复速度递增排列:
| 策略 | 典型 RTO | 典型 RPO | 核心特征 |
|---|---|---|---|
| 备份与恢复(Backup & Restore) | 数小时~数十小时 | 数小时 | 仅定期备份,灾备区无常驻资源 |
| 指示灯(Pilot Light) | 数十分钟 | 分钟级 | 数据持续复制,核心服务常驻但规模最小 |
| 温备(Warm Standby) | 数分钟~数十分钟 | 秒级~分钟级 | 灾备区运行缩小版全栈,可快速扩容 |
| 多区域主动-主动(Active-Active) | 接近 0 | 接近 0 | 两区域同时承载流量,需解决数据冲突 |
选择哪一种,取决于业务能承受的损失与愿意支付的费用。一个实用的判断方法是:先确定 RTO/RPO 的硬性上限,再选择能满足该上限的最低成本策略,而不是反过来先选最贵的方案。
五、本课程实战项目说明
为了让知识可验证,本课程将围绕一个贯穿始终的实战项目展开:一个部署在 AWS 上的三层 Web 应用,包含 Route 53 域名解析、Application Load Balancer、EC2 应用层、RDS 数据库以及 S3 静态资源。项目分阶段推进:
- 第一阶段:在单区域内实现跨 AZ 高可用,验证 AZ 故障时的自动恢复能力。
- 第二阶段:引入跨区域数据复制与备份策略,明确 RPO 的实际表现。
- 第三阶段:搭建灾备区域,实现 DNS 故障转移,测量真实 RTO。
- 第四阶段:进行故障注入演练,用数据检验架构是否达到既定目标。
在进入具体搭建之前,请先为你的业务写下两个数字:可接受的最长中断时间,以及可接受的最大数据丢失量。这两个数字将贯穿本课程的所有设计决策。