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

2021-03-15

本文详细介绍了如何在AWS上实现跨区域的冷备方案,可以在不增加额外闲置成本的情况下恢复因区域故障导致的生产宕机。除了网络基础架构预配置外,只做数据定期快照向灾备环境拷贝,其余所有组件都是灾难发生后通过脚本动态创建。

前提假设

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

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

灾备架构

灾备架构图

解决方案概述

数据库:Snapshot 备份

通过 CloudWatch Rule 定时触发 Lambda,调用 AWS API 定时进行数据库快照拍摄,并将新创建的 Snapshot 自动拷贝到灾备区域。

RDS快照备份

应用层:AMI 备份

当北京区域新建 AMI 后,可以按时对实例进行快照拍摄,并将新建的 AMI 复制到宁夏区域。可手动触发或通过 CloudWatch Event + Lambda 自动化整个过程。

AMI复制

媒体文件:S3 跨区域备份

开启 S3 Cross Region Replication,实现 S3 文件的跨 Region 自动复制。S3 通过 S3FS 挂载到 EC2 作为 WordPress 媒体文件库。

灾备脚本

GitHub aws-dr-samples repo 上提供了基于 Terraform 的可执行脚本,帮助用户快速构建灾备环境。

灾难发生后,按以下顺序进行灾难恢复:

  1. 手动将 RDS 数据库快照还原为数据库实例
  2. 执行脚本创建容灾集群
  3. 进行健康检查,确定容灾集群能够正常运行
  4. 执行 DNS 切换,把用户访问切换到容灾集群

价格(宁夏区,参考)

服务单价年费用(元)
AMI 20G0.277/GB/月66.48
S3 不频繁访问 1T0.1030/GB/月1265.7
跨区域流量 200G0.6003/GB120.06
含税合计1539.37

注意事项

  • S3 Cross Region Replication 是异步复制,大多数对象会在 15 分钟内复制,但极少数情况下可能需要更长时间
  • 容灾方案中的 Redis 节点是冷启动,启动后内存中没有缓存数据,需注意数据库瞬间读写冲击
  • 如果在北京区域对 EC2 进行了变更,请及时把北京区域的 AMI 复制到宁夏区域

总结

本文详细介绍了如何在 AWS 上实现跨区域的 Cold Backup 灾备方案,并提供了 Terraform 模板进行可行性验证。利用本文所述方法,在主区域发生故障后,自动化脚本会自动执行,完成新区域整套环境的启动,以最大程度节省成本。

返回技术博客