企业备份&容灾系列 – AWS 多区域 Pilot Light 容灾设计

2021-03-14

本文详细介绍了如何在AWS上实现跨区域的Pilot Light灾备方案。除了VPC预配置和RDS热备外,其余所有组件都是灾难发生后通过脚本动态创建,达到最小的基础设施成本。

前提假设

该方案模拟一个 WordPress cluster 部署在 AWS 上进行 multi-region pilot light 灾备。生产区域组件:

  • RDS MySQL:WordPress 数据库
  • ElastiCache Redis:缓存层
  • S3:WordPress 文件存储,通过 S3FS 挂载到 EC2
  • EC2 + Auto Scaling Group:WordPress 应用层
  • ELB:负载均衡
  • NAT Gateway:出网访问

架构

Pilot Light架构图

解决方案概述

RDS MySQL 数据备份

配置 RDS Cross Region Replica,实现数据库的异步复制。灾难发生后,通过提升只读副本为独立的数据库实例,使其能够执行正常的写入操作。

S3 Bucket 数据备份

开启 S3 Cross Region Replication,实现 S3 文件的跨 Region 自动复制。

应用镜像

将北京区域新建的 AMI 复制到宁夏区域,可手动触发或通过 CloudWatch Event + Lambda 自动化。

灾备脚本

GitHub aws-dr-samples 上提供了基于 Terraform 的可执行脚本。灾难发生后,按以下顺序进行灾难恢复:

  1. 手动提升 RDS 只读副本为独立的数据库实例
  2. 执行脚本创建容灾集群
  3. 进行健康检查,确定容灾集群能够正常运行
  4. 执行 DNS 切换,把用户访问切换到容灾集群

价格(宁夏区,参考)

服务类型单价年费用(元)
AMI 20G0.277/GB/月66.48
S3 不频繁访问 1T0.1030/GB/月1265.7
RDS Read Replicadb.m4.large 单AZ1.1733/h5540
跨区域流量 2T0.6003/GB1229.41
含税合计8587.69

注意事项

  • S3 Cross Region Replication 是异步复制,大多数对象会在 15 分钟内复制
  • RDS MySQL Cross Region Replication 采用异步复制,Replica 和 Master 之间的 lag 取决于事务大小和 Master 负荷
  • 容灾方案中的 Redis 节点是冷启动,需注意数据库瞬间读写冲击,建议在应用代码中实施熔断机制
  • 如果在北京区域对 EC2 进行了变更,请及时把北京区域的 AMI 复制到宁夏区域

总结

本文详细介绍了如何在 AWS 上实现跨区域的 Pilot Light 灾备方案,并提供了 Terraform 模板进行可行性验证。除了 VPC 预配置和 RDS 热备外,其余所有组件都是灾难发生后通过脚本动态创建,达到最小的基础设施成本。

本文转载亚马逊云科技官方博客 《企业备份&容灾系列 – AWS 多区域 Pilot Light 容灾设计》

返回技术博客