多 Region 主动-主动与主动-被动
使用 Route 53 延迟路由同时将流量分配到多个 Region,或通过运行状况检查故障转移到温备环境
多 Region 主动-主动与主动-被动 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
为什么需要多区域架构
Multi-AZ 可以防御单个 AZ 故障,但在大规模灾难、重大服务中断或监管要求下,整个 AWS 区域都可能无法使用。多区域架构通过在两个或更多地理位置分隔的区域中运行工作负载来应对这一问题。主要有两种模式:主动-被动(一个区域提供流量服务,另一个区域处于 Standby 等待状态)和主动-主动(两个区域同时提供流量服务)。
主动-被动:温备用模式
在主动-被动多区域设置中,主区域处理所有生产流量。辅助区域运行一个经过缩减但可正常工作的副本,并保持 Warm、随时待命。数据会持续从主区域复制到辅助区域。当主区域发生故障时,您可以使用 Route 53 故障转移路由将辅助区域提升为活动区域。与主动-主动相比,这种模式成本更低,但 RTO 更高(因为需要提升并扩展备用区域)。
# Route 53 failover routing configuration
# Primary record: us-east-1 ALB (primary)
# Secondary record: us-west-2 ALB (failover)
aws route53 change-resource-record-sets \
--hosted-zone-id Z123 \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"Failover": "PRIMARY",
"HealthCheckId": "hc-primary"
}
}]
}'主动-主动:两个区域同时承载流量
在主动-主动设置中,两个区域同时提供生产流量。Route 53 通过基于延迟的路由或加权路由,将用户分配到最近或最合适的区域。当一个区域发生故障时,Route 53 的运行状况检查会检测到故障,并将所有流量路由到健康区域。主动-主动模式可提供最佳 RTO(接近零),降低全球分布式用户的延迟,并通过将负载分散到多个区域来提高吞吐量。
# Route 53 latency-based routing for active-active
aws route53 change-resource-record-sets \
--hosted-zone-id Z123 \
--change-batch '{
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"Region": "us-east-1",
"SetIdentifier": "us-east-1",
"HealthCheckId": "hc-use1",
"AliasTarget": {"DNSName": "alb-use1.amazonaws.com"}
}
}
]
}'跨区域数据复制
多区域架构中最困难的部分是保持各区域之间的数据一致性。主要工具包括:S3 Cross-Region Replication(CRR) 会将 S3 对象以异步方式复制到另一个区域的 Bucket 中;DynamoDB Global Tables 提供最终一致性的多主、多区域复制;Aurora Global Database 可将数据从一个主区域复制到最多五个辅助区域,延迟低于 1 秒。每种复制机制都有不同的一致性保证和延迟特征。
# Enable S3 Cross-Region Replication
aws s3api put-bucket-replication \
--bucket source-bucket-us-east-1 \
--replication-configuration '{
"Role": "arn:aws:iam::123:role/replication-role",
"Rules": [{
"Status": "Enabled",
"Destination": {
"Bucket": "arn:aws:s3:::dest-bucket-us-west-2"
}
}]
}'使用 DynamoDB Global Tables 实现主动-主动
DynamoDB Global Tables 支持真正的主动-主动、多区域、多主复制。您的应用可以在任意区域向 DynamoDB 写入数据,变更通常会在 1 秒内复制到所有其他区域。冲突解决采用基于时间戳的最后写入者获胜策略。这使 Global Tables 非常适合游戏排行榜、用户资料和会话存储等全球分布式应用,因为这些应用非常重视低延迟的本地读写。
# Create DynamoDB Global Table
aws dynamodb create-global-table \
--global-table-name UserProfiles \
--replication-group \
RegionName=us-east-1 \
RegionName=eu-west-1 \
RegionName=ap-southeast-1
# Applications in each region write to local DynamoDB
# Replication is automatic and bi-directionalAurora Global Database
Aurora Global Database 跨越多个 AWS 区域,由一个主区域处理写入,最多五个辅助区域处理读取,复制延迟低于 1 秒。对于 DR,您可以在 1 分钟内将辅助区域提升为主区域,因此它适合采用激进 RTO 的主动-被动模式。辅助区域还可以提供低延迟读取流量,因此这种模式是读取采用主动-主动、写入采用主动-被动的混合模式。
# Create Aurora Global Database
aws rds create-global-cluster \
--global-cluster-identifier my-global-db \
--engine aurora-postgresql \
--engine-version 14.5
# Add secondary region
aws rds create-db-cluster \
--db-cluster-identifier secondary-cluster \
--global-cluster-identifier my-global-db \
--engine aurora-postgresql \
--region eu-west-1用于故障转移的 Route 53 运行状况检查
多区域故障转移依赖Route 53 运行状况检查来检测区域故障。运行状况检查可以监控某个Endpoint(HTTP/HTTPS/TCP)、某个CloudWatch 告警,也可以根据其他运行状况检查进行计算。Route 53 会持续从全球多个位置轮询您的 Endpoint。当某项检查失败时,Route 53 会自动停止返回该区域的记录,并在 DNS TTL 周期内将流量重定向到健康区域。
# Create Route 53 health check
aws route53 create-health-check \
--caller-reference unique-ref-001 \
--health-check-config '{
"Type": "HTTPS",
"FullyQualifiedDomainName": "app.us-east-1.example.com",
"Port": 443,
"ResourcePath": "/health",
"RequestInterval": 30,
"FailureThreshold": 3
}'使用 Global Accelerator 实现主动-主动
AWS Global Accelerator 提供两个静态 Anycast IP 地址,通过 AWS 全球网络将流量路由到最佳 Endpoint。与依赖 TTL 的 Route 53 DNS 故障转移不同,Global Accelerator 可在1–3 秒内检测到 Endpoint 故障并立即重新路由流量,速度远快于 DNS 传播。当您需要亚秒级故障转移、用于白名单的固定 IP,或基于 DNS TTL 的路由对于 RTO 而言过慢时,请使用 Global Accelerator。
# Create Global Accelerator
aws globalaccelerator create-accelerator \
--name my-accelerator \
--ip-address-type IPV4
# Add endpoints in multiple regions
aws globalaccelerator create-endpoint-group \
--listener-arn arn:aws:globalaccelerator::123:accelerator/xxx/listener/yyy \
--endpoint-group-region us-east-1 \
--endpoint-configurations EndpointId=alb-us-east-1-arn,Weight=100主动-主动模式中的冲突解决
主动-主动多区域架构面临一个根本性挑战:写入冲突。如果两个区域同时更新同一条记录,哪次更新应当生效?DynamoDB Global Tables 使用最后写入者获胜策略。应用层面的冲突解决策略包括:事件溯源(使用仅追加日志和 CRDT 合并)、版本控制(拒绝使用过期版本号的写入),或分区写入(每个区域负责一个数据分片,且只能写入自己的分片)。请设计数据模型,以尽量减少跨区域写入冲突。
# DynamoDB conditional write to prevent conflicts
aws dynamodb update-item \
--table-name Orders \
--key '{"orderId":{"S":"ord-123"}}' \
--update-expression 'SET #s = :newStatus' \
--condition-expression '#v = :expectedVersion' \
--expression-attribute-names '{"#s":"status","#v":"version"}' \
--expression-attribute-values '{":newStatus":{"S":"shipped"},":expectedVersion":{"N":"1"}}'成本与运维复杂性
多区域架构会显著增加成本和复杂性。您需要为多个区域中的资源、数据复制成本(跨区域数据传输)、运行状况检查成本付费,而且通常还需要在每个区域部署重复的运维工具。主动-被动更具成本效益,因为 Standby 以降低后的容量运行。主动-主动成本最高,但可提供最佳用户体验和 RTO。请始终权衡成本与额外区域韧性的业务价值。
# Key costs in multi-region architecture:
# - EC2/RDS in each region: full compute costs
# - Cross-region data transfer: ~$0.02/GB
# - Route 53 health checks: ~$0.50/check/month
# - Global Accelerator: $0.025/hour + data transfer
# - DynamoDB Global Table replication: per-write charges per region
# - Aurora Global Database: storage replicated to all regions选择合适的多区域模式
请根据业务需求选择多区域模式:如果 RTO > 1 小时且成本优先,请使用Backup and Restore将数据恢复到另一个区域。如果 RTO 以分钟计,请使用带温备用的主动-被动模式。如果 RTO < 1 分钟且用户分布在全球各地,请使用主动-主动模式。还要考虑监管要求——某些行业要求数据保留在特定区域,这可能会限制您的复制选项。请明确记录架构决策及其权衡。
# Decision matrix:
# RTO > 1 hour, RPO > 1 hour: Backup & Restore
# RTO ~minutes, RPO ~minutes: Active-Passive (Warm Standby)
# RTO < 1 minute, RPO ~0: Active-Active
# Key services for each:
# Backup & Restore: AWS Backup + S3 CRR
# Active-Passive: Aurora Global DB + Route 53 failover
# Active-Active: DynamoDB Global Tables + Global Accelerator快速检查
测试您对本课 AWS Solutions Architect(SAA-C03)概念的理解。
课程回顾
本课中您学到了:主动-被动模式运行一个在发生故障时激活的 Standby 区域,主动-主动模式同时从多个区域提供流量,并且DynamoDB Global Tables 和 Aurora Global Database 是多区域数据复制的关键服务。Route 53 运行状况检查和 Global Accelerator 负责处理流量路由决策。接下来我们将探讨运行状况检查、断路器和重试逻辑。
常见问题解答
「多 Region 主动-主动与主动-被动」课时是免费的吗?
是的 — 「多 Region 主动-主动与主动-被动」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「多 Region 主动-主动与主动-被动」这节课中我会学到什么?
使用 Route 53 延迟路由同时将流量分配到多个 Region,或通过运行状况检查故障转移到温备环境 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「多 Region 主动-主动与主动-被动」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- HA 与容错:定义与权衡
- 有状态服务的多 AZ 模式
- 多 Region 主动-主动与主动-被动
- 运行状况检查、断路器与重试逻辑