亚马逊MWAA的灾难恢复策略

亚马逊 MWAA 灾备策略 第一部分

撰文作者:Parnab Basak Chandan Rupakheti Vinod Jayendra Rupesh Tiwari,发布日期:2024年1月16日,信息来源于 Amazon CloudWatch、Amazon EventBridge、Amazon Managed Workflows for Apache Airflow (Amazon MWAA)、Amazon Simple Storage Service (S3)、架构与其他相关资源。

关键要点

在云计算的快速发展中,确保关键应用程序的韧性和可用性至关重要。对于采用 Amazon Managed Workflows for Apache AirflowAmazon MWAA的组织而言,拥有有效的灾备计划以确保业务连续性变得尤为重要。本文将探讨 MWAA 的灾备必要性,并提供将其环境在意外中断情况下保持正常运作的解决方案。

亚马逊 MWAA灾备的必要性

Amazon MWAA是一个完全托管的Apache Airflow服务,通过自动化工作流编排为组织提供巨大的价值,尤其在提取、转换和加载ETL、DevOps以及机器学习ML工作负载中。它具有分布式架构,包含调度器、工作进程、WEB 服务器、队列和数据库等多个组件,这使得实施全面的灾备策略变得困难。

活跃的亚马逊 MWAA 环境会持续解析 Airflow 的 有向无环图DAGs,从已配置的 Amazon S3 存储桶中读取它们。由于网络无法接入、意外损坏或删除,DAG 源不可用将导致较长的停机时间和服务中断。

在 Airflow 中,元数据数据库是核心组件,存储配置变量、角色、权限和 DAG 运行历史。因此,保持元数据数据库的健康对 Airflow 环境至关重要。就像其他核心 Airflow 组件一样,确保有备份和灾备计划非常重要。

Amazon MWAA 会在你选择的 AWS 区域 的 VPC 内将 Airflow 组件部署到多个 可用性区域。这提供故障容错与自动恢复功能,以应对单个可用性区域的故障。对于关键工作负载,通过多区域部署提高对单个区域损害的弹性以确保高可用性和业务连续性也至关重要。

在 Amazon MWAA 环境中,在保持冗余基础设施的成本、复杂性和恢复时间之间取得平衡至关重要。组织追求能够最小化恢复时间目标RTO和恢复点目标RPO的经济有效解决方案,以满足服务级别协议,保持经济适用并满足客户需求。

通过指标和警报主动监测灾害

在主要环境中快速检测灾害对于及时灾备至关重要。监控 Amazon CloudWatch 的 SchedulerHeartbeat 指标 可提供有关活跃 Amazon MWAA 环境 Airflow 健康状况的见解。可以将其他健康检查指标添加到评估标准中,例如检查上下游系统的可用性和网络可达性以及结合 CloudWatch 警报,在这些值超过预定阈值时发送通知。可以将警报添加到仪表板,以监控并接收有关您在多个区域的 AWS 资源和应用程序的警报。

AWS 会在 服务健康仪表板 上发布关于服务可用性的最新信息,您可以随时检查以获取当前状态信息,或订阅 RSS 源以获取您运营区域内每个单独服务中断的通知。 AWS Health Dashboard 提供可能影响您帐户的 AWS 状态事件的信息。

通过结合指标监控、可用仪表板和自动警报,您可以及时发现主要环境的不可用性,从而采取主动措施随时转向灾备计划。在灾备规划和实施的过程中,处理事件检测、通知、升级、发现和声明是至关重要的,以使目标现实且可实现,并提供商业价值。

接下来的部分将讨论两种亚马逊 MWAA 灾备策略解决方案及其架构。

灾备策略解决方案 1:备份与恢复

备份与恢复策略涉及在与您的主要 Amazon MWAA 环境相同或不同的区域生成 Airflow 组件备份。为了确保连续性,您可以将这些备份异步复制到灾备区域,且对主要 Amazon MWAA 环境的性能影响最小。在极少数情况下,如果主要区域遭受损害或服务中断,且创建新的 Amazon MWAA 环境,则可从现有备份恢复历史数据。然而,需要注意的是,在恢复过程中,可能会有一段时间没有 Airflow 环境能够处理工作流,直到新环境完全配置并标记为可用。

这一策略提供了一种低成本、低复杂性的解决方案,也适用于缓解主区域内的数据丢失或损坏。待备份的数据量及创建新 Amazon MWAA 环境的时间通常需要2030分钟将影响恢复的速度。为了使基础设施能够快速部署而不出错,可采用 基础设施即代码IaC进行部署。如果不采用 IaC,恢复类似的灾备环境可能会很复杂,这将导致恢复时间延长,可能超过 RTO。

让我们探讨在您的主要 Amazon MWAA 环境运行时所需的设置,如下图所示。

该解决方案由三个关键组件构成。第一个组件是主要环境,其中 Airflow 工作流最初被部署并处于活跃状态。第二个组件是灾备监控组件,由 CloudWatch 及 AWS Step Functions 状态机与 AWS Lambda 函数组成。第三个组件用于创建和存储所有配置和元数据备份,这些备份可以在与您主区域相同的区域或使用 S3 跨区域复制CRR复制到灾备区域。对于 CRR,您还需要为从 Amazon S3 向每个目标区域発生的跨区域数据传输支付费用。

工作流前3个步骤如下:

作为备份创建流程的一部分,使用 导出 DAG 工具将 Airflow 元数据复制到 S3 存储桶,您可以根据 RPO 时间间隔定期运行。您现有的主要 Amazon MWAA 环境会自动向 CloudWatch 的 SchedulerHeartbeat 指标发出调度程序健康状态。一个多步骤的 Step Functions 状态机 将由定期的 Amazon EventBridge 计划 触发,以监控调度程序的健康状态。作为状态机的主要步骤,Lambda 函数会评估 SchedulerHeartbeat 指标的状态。如果该指标被视为健康,则不会采取进一步操作。

下图演示了解决方案工作流中的额外步骤。

梯子机场推荐

当心跳计数在一段时间内偏离正常计数时,将启动一系列操作以恢复到灾备区域的新 Amazon MWAA 环境。这些操作包括开始创建新的 Amazon MWAA 环境、复制主要环境的配置,然后等待新环境变得可用。当该环境可用时,将运行 导入 DAG 工具,以从备份中恢复元数据内容。任何在主要环境受损期间中断的 DAG 运行需要手动重新运行,以维护服务水平协议。未来的 DAG 运行按下一个配置计划排队运行。

灾备策略解决方案 2:主动被动环境与定期数据同步

主动被动环境与定期数据同步策略专注于保持活跃的主要环境与被动的 Amazon MWAA 灾备环境之间的定期数据同步。通过定期更新和同步 DAG 存储和元数据数据库,该策略确保灾备环境保持与主要环境一致或几乎一致。灾备区域可以与您的主要 Amazon MWAA 环境处于同一区域,也可以是不同的区域。如果发生灾难,可以利用备份快速恢复到先前已知的良好状态,以最小化数据丢失或损坏。

这种策略以频繁的同步提供了较低的 RTO 和 RPO,使得可以快速恢复并最小化数据丢失。基础设施成本和代码部署则合并在一起,以维护主要和灾备 Amazon MWAA 环境。您的灾备环境可以立即运行 DAG。

下图展示了您的主要 Amazon MWAA 环境处于活跃运行状态时所需的设置。

该解决方案由四个关键组件构成。与备份与恢复解决方案类似,第一个组件是主要环境,其中工作流程最初被部署且处于活跃状态。第二个组件是灾备监控组件,由 CloudWatch 和 Step Functions 状态机与 Lambda 函数组成。第三个组件创建和存储需要进行数据库同步的所有配置和元数据备份。这些备份可以位于您的主要区域,或使用 Amazon S3 跨区域复制到灾备区域。前面提到,对于 CRR,您还需要为从 Amazon S3 向每个目标区域发生的跨区域数据传输支付费用。最后一个组件是一个被动的 Amazon MWAA 环境,具有与主要环境相同的 Airflow 代码和环境配置。DAG 在灾备环境中使用与主要环境相同的持续集成和持续交付CI/CD管道进行部署。与主要环境不同的是,DAG 处于暂停状态,以避免造成重复运行。

亚马逊MWAA的灾难恢复策略

工作流的第一步骤与备份与恢复策略类似:

作为备份创建过程的一部分,使用导出 DAG 工具定期将 Airflow 元数据复制到 S3 存储桶,依据您的 RPO 时间间隔进行。您现有的主要 Amazon MWAA 环境会自动向 CloudWatch 的 SchedulerHeartbeat 指标发出调度程序健康状态。一个多步骤的 Step Functions 状态机将由定期的 Amazon EventBridge 计划触发,以监控调度程序健康状态。作为状态机的主要步骤,Lambda 函数会评估 SchedulerHeartbeat 指标的状态。如果该指标被视为健康,则不会采取任何进一步操作。

下图演示了工作流的最后步骤。

当心跳计数在一段时间内偏离正常计数时,将启动灾备工作。首先,Lambda 函数会触发导入 DAG 工具,以将元数据内容从备份恢复到被动 Amazon MWAA 灾备环境。当导入完成后,同一 DAG 可以取消暂停其他 Airflow DAG,使其为未来的运行变为活跃状态。所有在主要环境中断期间被中断的 DAG 运行需要手动重新运行,以维护服务水平协议。未来的 DAG 运行会根据下一个配置计划进行排队。

提高 Amazon MWAA 韧性的最佳实践

为提高 Amazon MWAA 环境的韧性并确保顺利的灾备,考虑实施以下最佳实践:

健全的备份与恢复机制 对 Amazon MWAA 数据实施全面的备份与恢复机制至关重要。定期根据组织的保留政策删除现有元数据可以缩短备份时间并提高 Amazon MWAA 环境的性能。使用 IaC 自动化 使用 AWS CloudFormation、AWS 云开发工具包AWS CDK或 Terraform 等自动化和编排工具可以简化 Amazon MWAA 环境的部署和配置管理。这确保了一致性、重现性和在灾备场景下更快的恢复。幂等的 DAG 和任务 在 Airflow 中,如果使用相同的输入多次重新运行同一 DAG 产生的效果与仅运行一次相同,该 DAG 就被视为幂等。设计幂等的 DAG 并保持任务的原子性,能够减少在恢复环境中对被中断 DAG 手动重新运行时的恢复时间。定期测试与验证 健全的 Amazon MWAA 灾备策略应包括定期测试和验证。通过模拟灾难场景,您可以识别灾备计划中的漏洞,优化流程,并确保 Amazon MWAA 环境能够完全恢复。

结论

本文探讨了 Amazon MWAA 灾备所面临的挑战,并讨论了提高韧性的最佳实践。我们审视了两种灾备策略解决方案:备份与恢复,以及主动被动环境与定期数据同步。通过实施这些解决方案和遵循最佳实践,您可以保护 Amazon MWAA 环境,最小化停机时间,并减轻灾害带来的影响。定期的测试、验证与变革是有效 Amazon MWAA 灾备策略的关键。通过持续评估和完善灾备计划,您可以确保 Amazon MWAA 环境的韧性和持续运行,即使在不可预见的事件发生时。

请查阅 第二部分 了解实施架构和可部署解决方案的详细信息。更多关于 Amazon MWAA 的信息和代码示例,请参见 Amazon MWAA 用户指南 和 Amazon MWAA 示例 GitHub 仓库。

关于作者

Parnab Basak 是 AWS 的资深解决方案架构师和无服务专家,专注于创建基于现代软件开发实践的新云原生解决方案。Parnab 在分析与集成服务领域紧密合作,帮助客户采用 AWS 服务来满足其工作流编排需求。

Chandan Rupakheti 是 AWS 的解决方案架构师和无服务专家,热衷于在云中构建创新解决方案并将利益相关者团结在一起。在工作以外,他喜欢和家人朋友共度美好时光,以及倾听和演奏音乐。

![Vinod Jayendra](https//d2908q01vomqb2cloudfrontnet/b6692ea5df920cad691c

给我们留言