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

前提假设

该方案是模拟一个 WordPress cluster 部署在 AWS 上进行 multi-region pilot light 灾备的方案。生产区域组件选择如下。本文也提供了一键部署的模板可以用来进行方案验证。

灾备架构

解决方案概述

为了实现冷备环境的搭建以及自动化启动,我们将分别从数据库,应用层,文件服务,自动化脚本这几个方面做展开。

数据库:snapshot备份

Amazon RDS 在数据库实例的备份窗口中创建数据库自动备份的事件, 可以发送到CloudWatch Event。自动化解决方案可以通过CloudWatch Rule定时触发Lambda, 调用AWS API定时进行数据库快照拍摄并将新创建的 Snapshot 自动拷贝到灾备区域。  Amazon RDS 创建数据库实例的存储卷快照,并备份整个数据库实例而不仅仅是单个数据库。可通过从该数据库快照还原来创建数据库实例。还原数据库实例时,需要提供用于还原的数据库快照的名称,然后提供还原后所新建的数据库实例的名称。无法从数据库快照还原到现有数据库实例;在还原时,将创建一个新的数据库实例。 

应用层:AMI备份

当北京区域新建AMI后,可以按时对实例进行快照拍摄,并将新建的AMI复制到宁夏区域。有两种方式可以实现AMI的复制。

应用层:应用配置

在EC2的启动配置中设置 user-data,使 EC2 内应用程序在启动后能够获取所需的配置,例如 RDS Mysql 和 Redis 的endpoint 等等。启动配置已经包含在灾难恢复的脚本中。

媒体文件:S3跨区域备份

静态文件及其它需要同步到灾备region的文件存放在S3上。开启S3 Cross Region Replication,实现S3文件的跨Region自动复制。S3 通过S3FS挂载到 EC2, 作为 WorkPress 媒体文件库。

灾备脚本

按照上述方案,在GitHub aws-dr-samples repo上提供了基于Terraform的可执行脚本,该套脚本可以帮助用户快速构建灾备环境。用户根据所需创建的资源写成脚本文件。执行脚本时,Terraform 通过调用 AWS API 来快速构建 AWS 资源。下文有如何使用的详细步骤描述。 在本方案中,设定Redis不包含持久化数据。因此无需实现复制,只需在灾难恢复时通过脚本创建新实例即可。 当灾难发生后,按照以下顺序进行灾难恢复:

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

接下来,我们会详细描述该方案的实施步骤和脚本运行执行过程。

价格

以宁夏区为例,按照上述灾备方案,假定需要的灾备资源及产生的费用为: