Amazon SOA-C02: 高可用性、容错与灾难恢复 — 学习指南
属于 AWS SysOps Administrator Associate SOA-C02 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.
该领域涵盖了如何设计系统,以确保在组件、服务或整个区域发生故障时,系统仍能保持可用和可恢复。它涵盖了备份和快照策略、复制和故障转移模式,以及为满足业务的 RTO(恢复时间目标)和 RPO(恢复点目标)而需要的操作测试。其运营重要性非常高:服务中断和数据丢失会直接影响 SLA、收入和合规性。高效的设计需要在成本、复杂性以及可接受的数据丢失和停机风险之间取得平衡。
备份策略、快照和保留
备份必须是自动化的,与应用程序状态保持一致,并根据策略进行保留。使用 AWS Backup 集中管理计划、保留和生命周期规则(创建带有存储库的备份计划,分配资源 ID ARN 或标签)。对于 EBS 卷,使用 Data Lifecycle Manager (DLM) 来计划快照(通过控制台或 aws dlm create-lifecycle-policy);CLI 创建快照的示例:aws ec2 create-snapshot --volume-id vol-0123456789abcdef0 --description "pre-upgrade"。对于 RDS,使用自动快照或手动数据库快照(aws rds create-db-snapshot --db-instance-identifier mydb --db-snapshot-identifier mydb-snap-YYYYMMDD)。启用 RDS 自动备份以实现时间点恢复;启用增强监控和快照保留以满足保留 SLA。
保留、不可变性和跨区域副本是关键决策:
- 较短的 RPO/RTO 需要频繁的快照和较短的保留删除窗口;这会增加成本。
- 对于法规要求的不可变性,可使用 AWS Backup Vault Lock 或 S3 Object Lock 进行合规保留。
- 为实现跨区域持久性,请复制快照(
aws ec2 copy-snapshot --source-region us-east-1 --source-snapshot-id snap-abc --destination-region us-west-2)并在进行跨区域复制前启用 S3 版本控制。
务必捕获应用程序一致性状态:对于 EC2,在创建快照前使用 AWS Systems Manager Run Command 或脚本来刷新/锁定文件系统;对于数据库,优先使用引擎原生快照(RDS/Aurora)或逻辑备份(mysqldump、pg_dump)以进行时间点验证。
跨区域复制和灾难恢复模式
跨区域策略可以减少区域性故障带来的爆炸半径(影响范围)。S3 跨区域复制 (CRR) 需要启用版本控制、一个 IAM 复制角色以及一个复制配置(通过控制台或 aws s3api put-bucket-replication --bucket src --replication-configuration file://replication.json)。RDS 支持跨区域只读副本(aws rds create-db-instance-read-replica),而 Aurora Global Database 则支持具有受控故障转移的低延迟跨区域读/写架构。DynamoDB Global Tables 可在区域间异步复制数据,适用于需要考虑最终一致性的多区域读取场景。
根据 RTO/RPO 和成本选择灾难恢复(DR)模式:
- Pilot Light (引导灯):将关键数据复制到备用区域(S3、快照、数据库副本),但只运行最少的基础设施;通过 IaC 模板快速扩展。
- Warm Standby (温备):在备用区域中运行一个较小的活动实例,数据持续复制,服务保持缩减规模,可以自动扩容。
- Multi-Region Active-Active (多区域双活):在多个区域运行完整的技术栈,并进行流量路由和冲突解决;需要全局复制(DynamoDB global tables、Aurora Global DB、应用程序级冲突处理)。
考虑复制一致性:同步复制可将 RPO 降至最低,但会增加延迟,且可能不支持跨区域;大多数跨区域选项是异步的,会引入复制延迟,这决定了实际可行的 RPO。
多可用区和多区域架构选择
多可用区(Multi-AZ)是实现区域内高可用的默认方式;它为许多托管服务提供自动故障转移,RTO 极小。RDS Multi-AZ 和 Aurora 会跨可用区复制存储——故障转移通常是自动的,并使用 DNS 切换。对于 EC2,将实例放置在多个可用区中,并置于 Application Load Balancer 和 Auto Scaling 组之后;使用跨可用区健康检查来检测和替换不健康的目标。
多区域(Multi-Region)增强了抵御区域级故障的弹性,但也增加了复杂性(数据复制、全局路由、合规性)。决策标准:
- 当您需要在区域内实现高可用性和低延迟,并希望以较低成本获得托管的自动故障转移时,请使用多可用区。
- 当需要针对区域丢失进行灾难恢复,或为全球双活架构降低延迟时,请使用多区域。
设计注意事项:
- DNS TTL:低 TTL(例如 60 秒)对于快速的基于 DNS 的故障转移是必需的,但这会增加 DNS 查询负载。
- 数据本地性和合规性:某些数据必须保留在特定区域内;相应地架构复制和加密策略。
- 成本与 RTO/RPO 的权衡:多区域双活架构会增加成本,但能将 RTO 降至最低。
故障切换机制(Route53 健康检查,自动化)
自动化故障切换使用健康检查、路由策略和编排。Route53 支持健康检查以及故障切换/加权/延迟路由。配置 Route53 健康检查以探测端点(HTTP、TCP 或 CloudWatch 警报),并配置一个故障切换记录集,以便在主资源失败时切换到备用资源。CLI 更新示例:aws route53 change-resource-record-sets –hosted-zone-id Z123456 –change-batch file://changes.json。使用 CloudWatch 警报(警报操作触发 AWS Lambda)来为非 DNS 操作编排故障切换。
集成负载均衡器和 Auto Scaling:ALB/NLB 目标组的健康检查会移除不健康的实例,而 Auto Scaling 会自动替换它们。对于数据库故障切换,依赖服务级别的机制:RDS Multi-AZ 或 Aurora 自动故障切换;对于跨区域提升,则使用只读副本或 Aurora Global DB 控制的提升。
两种操作模式:
- DNS 故障切换 (Route53):实现速度快,但依赖于 DNS TTL 和客户端缓存。
- 控制平面故障切换 (Lambda/Step Functions + API 调用):为复杂应用程序按可预测的顺序编排资源提升、IP/EIP 重新分配和 Route53 更新。
RTO/RPO 规划、测试和验证
RTO 是最大可接受的停机时间;RPO 是最大可接受的数据丢失量。为每个工作负载定义可衡量的目标,并据此调整架构选择:同步复制可降低 RPO,但可能会增加延迟;异步复制成本较低,但会增加潜在的数据丢失窗口。将业务 SLA 转化为保留策略和复制频率:RPO = 复制延迟 + 备份间隔;RTO = 检测时间 + 故障切换编排时间 + 恢复验证时间。
测试至关重要:定期运行灾难恢复 (DR) 演练,以验证恢复过程、DNS 故障切换和应用程序的完整性。通过将备份恢复到隔离的账户或 VPC 中来验证备份(使用 CloudFormation/CloudFormation StackSets 或 Terraform 自动化重建过程)。在测试期间捕获指标(DNS 传播时间、恢复点、应用级检查),并迭代优化自动化流程以降低 RTO。
常见陷阱和决策标准
- 假设快照等同于可恢复性:务必将快照恢复到独立环境中并验证应用一致性;使用引擎原生快照或在创建快照前静默应用程序。
- 为全球关键工作负载设计单区域系统:当区域性故障会影响客户时,应选择多区域模式或温备;同时考虑数据主权问题。
- 在设计中忽略 RTO/RPO:捕获每个工作负载的 RTO/RPO,并相应地选择复制/备份策略;将 RPO 映射到复制频率,将 RTO 映射到编排自动化。
- 过长的 DNS TTL 阻碍快速故障切换:为关键的故障切换记录设置较低的 TTL,仅在需要稳定路由时才使用全局加速。
- 忽略跨区域复制的 IAM/权限:跨区域复制 (CRR)、快照复制和备份库访问需要正确的角色和资源策略;测试复制相关的 IAM 路径。
- 不监控复制延迟和健康状况:检测 CloudWatch 指标(ReplicaLag、CPU、网络),并在阈值接近 RPO 限制时发出警报。
实际问题:用例场景
AcmePayments 在 us-east-1 中运行一个符合 PCI 范围的交易 API,并要求在区域性中断期间,核心交易数据的 RTO 小于 5 分钟,RPO 接近于零。
- 通过选择 Aurora Global Database,在 us-east-1 中设置可写主数据库,在 eu-west-1 中设置备用数据库以实现快速跨区域复制,从而定义 RTO=5 分钟和 RPO≈0。
- 为区域内高可用性 (HA) 启用同步/按区域的 Multi-AZ(Aurora 副本 + Multi-AZ),并通过 Route53 发布 DNS,配置健康检查和低 TTL (60s) 以实现故障切换路由。
- 使用跨区域自动快照和 AWS Backup 备份库副本作为额外的不可变副本,并配置保留策略和备份库锁定。
- 使用 Step Functions 和 Lambda 自动化故障切换手册,以验证副本提升、更新 Route53 记录 (aws route53 change-resource-record-sets)、运行冒烟测试,并在检测到故障时回滚。
- 安排季度性灾难恢复 (DR) 演练,将备份恢复到隔离的 VPC 中,并测量实际的 RTO 和 RPO,然后优化自动化和扩展策略。
基本原理:将低延迟的全球数据库产品 (Aurora Global) 与基于 DNS 的路由和自动化编排相结合,可以在满足严格的 RTO/RPO 要求的同时,保持操作步骤的可重复性和可测试性。定期验证可确保备份和副本确实是可恢复的。
← 监控、日志与修复 · 所有领域 · 部署、预置与自动化 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →