选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

云中的灾难恢复选项 - 工作负载的灾难恢复 AWS:云端恢复

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

云中的灾难恢复选项

AWS 中可供您使用的灾难恢复策略可以大致分为四种方法,从备份的低成本和低复杂性到使用多个活动区域的更复杂的策略。主动/被动策略使用主动站点(例如 AWS 区域)来托管工作负载和提供流量。被动站点(例如不同的 AWS 区域)用于恢复。在触发故障转移事件之前,被动站点不会主动提供流量。

定期评估和测试您的灾难恢复策略至关重要,这样您就有信心在必要时调用该策略。使用 AWS Resilience Hub 持续验证和跟踪 AWS 工作负载的弹性,包括您是否有可能实现 RTO 和 RPO 目标。

该图显示了灾难恢复策略和每种策略的亮点。

图 6-灾难恢复策略

对于因一个物理数据中心中断或丢失而导致架构良好、高度可用的工作负载而发生的灾难事件,您可能只需要使用备份和恢复方法进行灾难恢复。如果您对灾难的定义超出了物理数据中心的中断或丢失,而不仅仅是某个地区的物理数据中心中断或丢失,或者您受到要求的监管要求的约束,那么您应该考虑指示灯、热待机或多站点主动/主动。

在选择策略以及实施策略的 AWS 资源时,请记住,在 AWS 中,我们通常将服务分为数据平面控制平面。数据面板负责交付实时服务,控制面板则用于配置环境。为了获得最大的弹性,您应仅使用数据平面操作作为故障转移操作的一部分。这是因为数据平面通常比控制平面具有更高的可用性设计目标。

备份与还原

Backup and Restore 是缓解数据丢失或损坏的合适方法。这种方法还可用于通过将数据复制到其他 AWS 区域来缓解区域灾难,或者缓解部署到单个可用区的工作负载的冗余不足。除数据外,您还必须在恢复区域中重新部署基础架构、配置和应用程序代码。为了能够在没有错误的情况下快速重新部署基础架构,您应始终使用基础设施即代码 (IaC) 进行部署,并使用诸如AWS CloudFormation或之类的服务。AWS Cloud Development Kit (AWS CDK)如果没有 IaC,恢复区域中的工作负载可能会很复杂,这将导致恢复时间延长,并可能超过您的 RTO。除用户数据外,请务必备份代码和配置,包括您用于创建亚马逊 EC2 实例的亚马逊系统映像 (AMIs)。您可以使用自动AWS CodePipeline重新部署应用程序代码和配置。

显示备份和恢复架构的架构图

图 7-备份和恢复架构

Amazon Web Services

您的工作负载数据需要定期运行或连续运行的备份策略。您运行备份的频率将决定您可实现的恢复点(恢复点应与您的 RPO 保持一致)。备份还应提供一种将其恢复到拍摄时间点的方法。Backup point-in-time with Recovery 可通过以下服务和资源获得:

对于亚马逊简单存储服务 (Amazon S3) Simple Service,您可以使用 Amazon S3 跨区域复制 (CRR) 将对象持续异步复制到灾难恢复区域的 S3 存储桶,同时为存储的对象提供版本控制,以便您可以选择还原点。连续复制数据的优点是备份数据的时间最短(接近零),但可能无法抵御灾难事件,例如数据损坏或恶意攻击(例如未经授权的数据删除)以及 point-in-time备份。AWS Pilot Light 服务部分介绍了持续复制。

AWS Backup提供了一个集中位置来配置、安排和监控以下服务和资源的 AWS 备份功能:

AWS Backup 支持跨区域复制备份,例如复制到灾难恢复区域。

作为针对您的 Amazon S3 数据的其他灾难恢复策略,请启用 S3 对象版本控制。对象版本控制通过在执行删除或修改操作之前保留原始版本,从而保护您在 S3 中的数据免受删除或修改操作的影响。对象版本控制可以有效缓解人为错误类型的灾难。如果您使用 S3 复制将数据备份到灾难恢复区域,则默认情况下,当删除源存储桶中的对象时,Amazon S3 仅在源存储桶中添加删除标记。这种方法可以保护灾难恢复区域中的数据免遭源区域的恶意删除。

除数据外,您还必须备份必要的配置和基础架构,以重新部署工作负载并满足恢复时间目标 (RTO)。 AWS CloudFormation提供基础设施即代码 (IaC),使您能够定义工作负载中的所有 AWS 资源,以便您可以可靠地部署和重新部署到多个 AWS 账户和 AWS 区域。您可以将工作负载使用的亚马逊 EC2 实例作为亚马逊系统映像 (AMIs) 进行备份。AMI 是根据您的实例的根卷和连接到您的实例的任何其他 EBS 卷的快照创建的。您可以使用此 AMI 启动 EC2 实例的恢复版本。AMI 可以在区域内或跨区域复制。或者,您可以使用AWS Backup跨账户复制备份并复制到其他 AWS 区域。跨账户备份功能有助于防范包括内部威胁或账户泄露在内的灾难事件。 AWS Backup 还增加了额外的 EC2备份功能——除了实例的单个 EBS 卷外, AWS Backup 还可以存储和跟踪以下元数据:实例类型、已配置的虚拟私有云 (VPC)、安全组、IAM 角色、监控配置和标签。但是,这些额外的元数据仅在将 EC2 备份还原到同一 AWS 区域时使用。

作为备份存储在灾难恢复区域中的任何数据都必须在故障转移时恢复。 AWS Backup 提供恢复功能,但目前不支持定时或自动恢复。您可以使用 AWS 软件开发工具包实现灾难恢复区域 APIs 的自动恢复 AWS Backup。您可以将其设置为定期重复的任务,也可以在备份完成时触发恢复。下图显示了使用亚马逊简单通知服务 (Amazon SNS) 进行自动恢复的示例,以及AWS Lambda实施定期数据恢复是个好主意,因为从备份中恢复数据是一项控制平面操作。如果在灾难期间无法使用此操作,您仍然可以从最近的备份中创建可操作的数据存储。

该图显示了恢复和测试备份的工作流程。

图 8-恢复和测试备份

注意

您的备份策略必须包括测试备份。有关更多信息,请参阅 “测试灾难恢复” 部分。有关实施的实际演示,请参阅 AWS Well-Architected 实验室:测试数据的备份和恢复

指示灯

使用试点方法,您可以将数据从一个区域复制到另一个区域,并配置核心工作负载基础设施的副本。支持数据复制和备份所需的资源(如数据库和对象存储)始终处于启用状态。其他元素(例如应用程序服务器)加载了应用程序代码和配置,但是 “已关闭”,仅在测试期间或调用灾难恢复故障转移时使用。在云中,您可以灵活地在不需要资源时取消配置资源,并在需要时对其进行配置。“关闭” 的最佳做法是不部署资源,然后创建配置和功能以在需要时进行部署(“开启”)。与备份和恢复方法不同,您的核心基础架构始终可用,并且您始终可以选择通过打开和扩展应用程序服务器来快速配置全面的生产环境。

指示灯架构参考架构图

图 9-指示灯架构

指示灯方法通过最大限度地减少活跃资源来最大限度地降低灾难恢复的持续成本,并且由于核心基础设施要求都已到位,因此可以简化灾难发生时的恢复。此恢复选项要求您更改部署方法。您需要对每个区域进行核心基础设施更改,并将工作负载(配置、代码)更改同时部署到每个区域。通过自动化部署并使用基础设施即代码 (IaC) 跨多个账户和地区部署基础架构(将基础设施全面部署到主区域,缩小/关闭基础设施部署到灾难恢复区域),可以简化此步骤。建议您在每个区域使用不同的账户,以提供最高级别的资源和安全隔离(在这种情况下,您的灾难恢复计划中也会包含泄露的凭证)。

使用这种方法,您还必须缓解数据灾难。连续数据复制可以保护您免受某些类型的灾难的侵害,但除非您的策略还包括存储数据的版本控制或 point-in-time恢复选项,否则它可能无法保护您免受数据损坏或破坏的影响。您可以备份灾难区域中复制的数据,以便在同一区域中创建 point-in-time备份。

Amazon Web Services

除了使用 Backup and Re store 部分中介绍的 AWS 服务来创建 point-in-time备份外,还要考虑将以下服务作为试点策略。

首先,将数据连续复制到灾难恢复区域中的实时数据库和数据存储是实现低 RPO 的最佳方法(除了前面讨论的 point-in-time备份之外还使用时)。AWS 使用以下服务和资源为数据提供持续、跨区域、异步的数据复制:

通过连续复制,您的数据版本几乎可以立即在灾难恢复区域中使用。可以使用 S3 对象的 S3 复制时间控制 (S3 RTC) 和 Amazon A urora 全球数据库的管理功能等服务功能来监控实际的复制时间。

在故障转移以从灾难恢复区域运行读/写工作负载时,必须将 RDS 只读副本提升为主实例。对于 Aurora 以外的数据库实例,该过程需要几分钟才能完成,重启是该过程的一部分。对于跨区域复制 (CRR) 和使用 RDS 进行故障转移,使用 Amazon Aurora 全球数据库具有多种优势。全球数据库使用专用的基础设施,使您的数据库完全可用于您的应用程序,并且可以复制到辅助区域,延迟通常不到一秒(AWS 区域内的延迟远小于 100 毫秒)。借助 Amazon Aurora 全球数据库,如果您的主要区域出现性能下降或中断,即使在区域完全中断的情况下,您也可以在不到一分钟的时间内将其中一个次要区域提升为承担读/写责任。您还可以将 Aurora 配置为监控所有辅助集群的 RPO 延迟时间,以确保至少有一个辅助集群保持在目标 RPO 窗口内。

必须在灾难恢复区域中部署资源较少或更少的核心工作负载基础架构的缩小版本。使用 AWS CloudFormation,您可以定义您的基础设施,并将其一致地部署在 AWS 账户和 AWS 区域中。 AWS CloudFormation 使用预定义的虚拟参数来识别 AWS 账户及其部署的 AWS 区域。因此,您可以在 CloudFormation 模板中实现条件逻辑,以便在灾难恢复区域中仅部署缩小版本的基础架构。 EC2 例如部署,Amazon 系统映像 (AMI) 提供诸如硬件配置和已安装软件之类的信息。您可以实施一个 Image Builder 管道来创建所需的内容,然后将其复制到您的主区域和备份区域。 AMIs 这有助于确保这些黄金 AMIs拥有在发生灾难事件时在新区域重新部署或扩展工作负载所需的一切。Amazon EC2 实例以缩小配置进行部署(实例数少于您的主区域中的实例)。要扩展基础设施以支持生产流量,请参阅 “热待机” 部分中的 A mazon A EC2 uto Scaling

对于主动/被动配置(例如指示灯),所有流量最初都将流向主区域,如果主区域不再可用,则切换到灾难恢复区域。此失效转移操作可以自动或手动启动。应谨慎使用基于运行状况检查或警报自动启动的故障转移。即使使用此处讨论的最佳实践,恢复时间和恢复点也将大于零,从而导致一些可用性和数据丢失。如果你在不需要时进行故障转移(误报),那么你就会蒙受这些损失。因此,通常会使用手动启动的失效转移。在这种情况下,您仍然应该自动执行失效转移步骤,这样手动启动就像按一下按钮一样简单。

使用 AWS 服务时,需要考虑多种流量管理选项。

一个选项是使用 Amazon Route 53。使用 Amazon Route 53,您可以将一个或多个 AWS 区域中的多个 IP 终端节点与 Route 53 域名关联起来。然后,您可以将流量路由到该域名下的相应终端节点。在故障转移时,您需要将流量切换到恢复终端节点,使其远离主端点。亚马逊 Route 53 运行状况检查会监控这些终端节点。使用这些运行状况检查,您可以配置自动启动的 DNS 故障转移,以确保流量仅发送到健康的终端节点,这是在数据平面上完成的高度可靠的操作。要使用手动启动的故障转移来实现这一点,您可以使用 Amazon 应用程序恢复控制器 (ARC)。使用 ARC,您可以创建 Route 53 运行状况检查,这些检查实际上并不检查运行状况,而是充当您可以完全控制的开/关开关。使用 AWS CLI 或 AWS 开发工具包,您可以使用此高度可用的数据平面 API 编写故障转移脚本。您的脚本会切换这些开关(Route 53 运行状况检查),告诉 Route 53 将流量发送到恢复区域而不是主区域。有些人使用的手动启动故障转移的另一种选择是使用加权路由策略并更改主区域和恢复区域的权重,以便所有流量都流向恢复区域。但是,请注意,这是控制平面操作,因此不如使用 Amazon 应用程序恢复控制器 (ARC) 的数据平面方法具有弹性。

另一种选择是使用AWS Global Accelerator。使用 AnyCast IP,您可以将一个或多个 AWS 区域中的多个终端节点与相同的静态公有 IP 地址相关联。 AWS Global Accelerator 然后将流量路由到与该地址关联的相应端点。全球加速器运行状况检查监控端点。使用这些运行状况 AWS Global Accelerator 检查,检查应用程序的运行状况,并将用户流量自动路由到运行状况良好的应用程序终端节点。对于手动启动的故障转移,您可以使用流量拨号调整哪个端点接收流量,但请注意,这是控制平面操作。Global Accelerator 利用广泛的 AWS 边缘网络将流量尽快转移到 AWS 网络主干上,因此它为应用程序终端节点提供了更低的延迟。全球加速器还可以避免 DNS 系统(如 Route 53)可能出现的缓存问题。

Amazon CloudFront 提供源站故障转移,如果对主终端节点的给定请求失败,则会将请求 CloudFront 路由到辅助终端节点。与前面描述的故障转移操作不同,所有后续请求仍会发送到主终端节点,并且每个请求都会进行故障转移。

AWS 弹性灾难恢复

AWS Elastic Daser Recovery (DRS) AWS 使用底层服务器的块级复制,持续将来自任何来源的服务器托管应用程序和服务器托管的数据库复制复制到底层服务器的块级复制中。Elastic 灾难恢复允许您使用中的区域 AWS Cloud 作为本地或其他云提供商上托管的工作负载及其环境的灾难恢复目标。如果 AWS 托管的工作负载仅包含托管在上的应用程序和数据库 EC2 (即不是 RDS),则它也可以用于对托管的工作负载进行灾难恢复。Elastic 灾难恢复使用 Pilot Light 策略,在用作暂存区的亚马逊虚拟私有云(Amazon VPC)中维护数据和 “已关闭” 资源的副本。触发故障转移事件时,将使用暂存的资源在用作恢复位置的目标 Amazon VPC 中自动创建满容量部署。

架构图显示了 AWS 弹性灾难恢复架构。

图 10- AWS 弹性灾难恢复架构

温备用

温备用方法涉及到确保在另一个区域中存在生产环境的规模缩减但功能齐全的副本。这种方法扩展了指示灯概念并减少了恢复时间,因为工作负载始终在另一个区域中运行。这种方法还允许您更轻松地执行测试或实施持续测试,从而增强您对灾难中恢复能力的信心。

架构图显示了热待机架构。

图 11-热备用架构

注意:指示灯和热待机之间的区别有时可能很难理解。两者都包含灾难恢复区域中的一个环境,其中包含您的主要区域资产的副本。区别在于,如果不先采取额外措施,指示灯就无法处理请求,而热备用模式可以立即处理流量(在降低的容量水平下)。指示灯方法要求您 “开启” 服务器,可能部署其他(非核心)基础架构,然后向上扩展,而热待机只需要您向上扩展(所有内容都已部署并正在运行)。使用您的 RTO 和 RPO 需求来帮助您在这些方法之间做出选择。

Amazon Web Services

备份和恢复以及指示灯下涵盖的所有 AWS 服务也用于热备用状态,用于数据备份、数据复制、主动/被动流量路由以及包括实例在内的 EC2 基础设施部署。

Amazon A EC2 uto Scaling 用于在 AWS 区域内扩展资源,包括亚马逊 EC2 实例、亚马逊 ECS 任务、亚马逊 DynamoDB 吞吐量和 Amazon Aurora 副本。Amazon A EC2 uto Scaling 在一个 AWS 区域内跨可用区域扩展 EC2 实例部署,从而在该区域内提供弹性。作为指示灯或热待机策略的一部分,使用 Auto Scaling 将灾难恢复区域扩展到完全的生产能力。例如,对于 EC2,增加 Auto Scaling 组的所需容量设置。您可以通过手动调整此设置 AWS Management Console,也可以通过 AWS SDK 自动调整此设置,也可以使用新的所需容量值重新部署 AWS CloudFormation 模板。您可以使用 AWS CloudFormation 参数来简化 CloudFormation 模板的重新部署。确保灾难恢复区域的服务配额设置得足够高,以免限制您向上扩展到生产容量。

由于 Auto Scaling 是一项控制平面活动,因此依赖它会降低整体恢复策略的弹性。这是一种权衡取舍。您可以选择预置足够的容量,以便恢复区域能够在部署时处理全部生产负载。这种静态稳定的配置称为热待机(参见下一节)。或者,您可以选择配置更少的资源,这样成本会更低,但要依赖于 Auto Scaling。某些 DR 实现会部署足够的资源来处理初始流量,从而确保低 RTO,然后依靠 Auto Scaling 来增加后续流量。

多站点主动/主动

作为多站点主动/主动或热备用主动/ 被动策略的一部分,您可以在多个区域同时运行工作负载。多站点。active/active serves traffic from all regions to which it is deployed, whereas hot standby serves traffic only from a single region, and the other Region(s) are only used for disaster recovery. With a multi-site active/active approach, users are able to access your workload in any of the Regions in which it is deployed. This approach is the most complex and costly approach to disaster recovery, but it can reduce your recovery time to near zero for most disasters with the correct technology choices and implementation (however data corruption may need to rely on backups, which usually results in a non-zero recovery point). Hot standby uses an active/passive configuration where users are only directed to a single region and DR regions do not take traffic. Most customers find that if they are going to stand up a full environment in the second Region, it makes sense to use it active/active或者,如果您不想同时使用两个区域来处理用户流量,那么 Warm Standby 提供了一种更经济、操作上不那么复杂的方法。

显示多站点主动/主动架构的架构图(将一条活动路径更改为非活动以获得热备用)

图 12-多站点主动/主动架构(对于热备用,将一条活动路径更改为非活动路径)

由于需要采用多站点active/active, because the workload is running in more than one Region, there is no such thing as failover in this scenario. Disaster recovery testing in this case would focus on how the workload reacts to loss of a Region: Is traffic routed away from the failed Region? Can the other Region(s) handle all the traffic? Testing for a data disaster is also required. Backup and recovery are still required and should be tested regularly. It should also be noted that recovery times for a data disaster involving data corruption, deletion, or obfuscation will always be greater than zero and the recovery point will always be at some point before the disaster was discovered. If the additional complexity and cost of a multi-site active/active(或热备用)方法来保持接近零的恢复时间,因此应付出更多努力来维护安全并防止人为错误,以缓解人为灾难。

Amazon Web Services

备份和恢复、指示灯和热备用中涵盖的所有 AWS 服务也用于数据备份、 point-in-time数据复制、主动/主动流量路由,以及基础设施(包括 EC2 实例)的部署和扩展。

对于前面讨论的主动/被动场景(指示灯和热待机),Amazon Route 53 和 Amazon Route 53 都 AWS Global Accelerator 可用于将网络流量路由到主动区域。对于这里的主动/主动策略,这两项服务还允许定义政策,以确定哪些用户访问哪个活跃的区域端点。通过 AWS Global Accelerator 设置流量拨号来控制定向到每个应用程序端点的流量百分比。Amazon Route 53 支持这种百分比方法以及其他多种可用策略,包括基于地理位置和延迟的策略。Global Accelerator 会自动利用广泛的 AWS 边缘服务器网络,尽快将流量载入 AWS 网络主干,从而降低请求延迟。

使用此策略进行异步数据复制可实现接近零的 RPO。像 A mazon Aurora 全球数据库这样的 AWS 服务使用专用的基础设施,使您的数据库完全可用于您的应用程序,并且可以复制到多达五个次要区域,典型延迟不到一秒。active/passive strategies, writes occur only to the primary Region. The difference with active/active正在设计如何处理写入每个活动区域的数据一致性。通常将用户读取设计为从离他们最近的区域(称为本地读取)提供读取。对于写入,您有几种选择:

  • 写入全局策略将所有写入路由到单个区域。如果该区域失败,则另一个区域将被提升为接受写入。Aurora 全球数据库非常适合全局写入,因为它支持跨区域的只读副本同步,而且您可以在不到一分钟的时间内将其中一个辅助区域提升为承担读/写责任。Aurora 还支持写入转发,这允许 Aurora 全局数据库中的辅助集群将执行写入操作的 SQL 语句转发到主集群。

  • 写入本地策略路由写入最近的区域(就像读取一样)。Amazon DynamoDB 全局表支持这样的策略,允许从您的全局表部署到的每个区域进行读取和写入。Amazon DynamoDB 全局表使用最后一个写入器赢得并发更新之间的协调。

  • 写入分区策略根据分区键(如用户 ID)将写入分配给特定区域,以避免写入冲突。在这种情况下,可以使用双向配置的 Amazon S3 复制,并且目前支持在两个区域之间进行复制。实现此方法时,请确保在存储桶 A 和 B 上启用副本修改同步,以复制副本元数据更改,例如对象访问控制列表 (ACLs)、对象标签或复制对象上的对象锁。您还可以配置是否在活动区域的存储桶之间复制删除标记。除了复制之外,您的策略还必须包括 point-in-time备份,以防止数据损坏或破坏事件。

AWS CloudFormation 是一款强大的工具,用于在多个 AWS 区域的 AWS 账户之间强制部署一致的基础设施。 AWS CloudFormation StackSets扩展了此功能,使您能够通过一次操作在多个账户和地区创建、更新或删除 CloudFormation 堆栈。尽管 AWS CloudFormation 使用 YAML 或 JSON 将基础设施定义为代码,但AWS Cloud Development Kit (AWS CDK)允许您使用熟悉的编程语言将基础设施定义为代码。您的代码将转换为 CloudFormation 该代码,然后用于在 AWS 中部署资源。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。