本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用应用程序恢复控制器管理 EMR 集群的多可用区失效转移
Aarti Rajput、Ashish Bhatt、Neeti Mishra 和 Nidhi Sharma,Amazon Web Services
Summary
此模式可为 Amazon EMR 工作负载提供有效的灾难恢复策略,帮助确保单个 AWS 区域内多个可用区之间的高可用性和数据一致性。该设计使用 Amazon 应用程序恢复控制器和应用程序负载均衡器,为基于 Apache Spark 的 EMR 集群管理失效转移操作和流量分配。
在标准条件下,主可用区托管活动的 EMR 集群和具有完整 read/write 功能的应用程序。如果可用区意外发生故障,流量将自动重定向到辅助可用区,并在那里启动一个新的 EMR 集群。两个可用区均通过专用的网关端点访问共享的 Amazon Simple Storage Service(Amazon S3)存储桶,从而确保数据管理的一致性。这种方法可以最大限度地减少停机时间,并在可用区发生故障时快速恢复关键的大数据工作负载。解决方案适用于金融、零售等实时分析至关重要的行业。
先决条件和限制
先决条件
一个活跃的 AWS 账户
从 EMR 集群的主节点访问 Amazon S3。
AWS 多可用区基础架构
限制
有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按区域划分的AWS 服务
。有关特定端点,请参阅服务端点和配额页面,然后选择相应服务的链接。
产品版本
架构
目标技术堆栈
Amazon EMR 集群
Amazon Application Recovery Controller
应用程序负载均衡器
亚马逊 S3 存储桶
适用于 Amazon S3 的网关端点
目标架构

此架构通过使用多个可用区,并借助应用程序恢复控制器实施自动化恢复机制,提供应用程序弹性。
应用程序负载均衡器将流量路由到活动的 Amazon EMR 环境,通常是主可用区中的主 EMR 集群。
活动的 EMR 集群处理应用程序请求,并通过其专用 Amazon S3 网关端点连接到 Amazon S3,以进行读取和写入操作。
Amazon S3 充当中央数据存储库,可能用作检查点或 EMR 集群之间的共享存储区。EMR 集群通过
s3://协议和 EMR 文件系统(EMRFS)直接写入 Amazon S3 时可以保持数据一致性。应用程序恢复控制器持续监控主可用区的运行状况,并在必要时自动管理失效转移操作。
如果应用程序恢复控制器在主 EMR 集群中检测到故障,将采取以下措施:
启动失效转移到可用区 2 中的辅助 EMR 集群的过程。
更新路由配置以将流量定向至辅助集群。
工具
AWS 服务
Amazon 应用程序恢复控制器可帮助您管理和协调跨 AWS 区域 可用区的应用程序恢复。通过减少传统工具和流程所需的手动步骤,此服务简化了流程并提高了应用程序恢复的可靠性。
应用程序负载均衡器在应用程序层运行,这是开放系统互连(OSI)模型的第 7 层。它在多个可用区中的多个目标(例如 EC2 实例)之间分配传入的应用程序流量。这将提高应用程序的可用性。
AWS Command Line Interface (AWS CLI) 是一个开源工具,可帮助您 AWS 服务 通过命令行 shell 中的命令进行交互。
Amazon EMR 是一个大数据平台,可为 Apache Spark、Apache Hive、Presto 等开源框架提供数据处理、交互式分析和机器学习功能。
AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。
Amazon S3 提供了一个简单 Web 服务接口,可用于随时随地存储和检索任何数量的数据。借助此服务,您可以轻松构建利用云原生存储的应用程序。
Amazon S3 的网关终端节点是您在路由表中指定的网关,用于通过 AWS 网络从您的虚拟私有云 (VPC) 访问 Amazon S3。
最佳实践
遵循 AWS 安全性、身份和合规性最佳实践
,确保架构强大且安全。 确保架构符合 AWS Well-Architected Framework
。 使用 Amazon S3 访问权限管控功能来管理基于 Spark 的 EMR 集群对 Amazon S3 的访问权限。有关详细信息,请参阅博客文章:Use Amazon EMR with S3 Access Grants to Scale Spark access to Amazon S3
。
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
登录到 AWS 管理控制台。 | AWS DevOps | |
配置 AWS CLI。 | 安装 AWS CLI 或将其更新到最新版本,以便可以在 AWS 服务 中进行交互 AWS 管理控制台。有关说明,请参阅 AWS CLI 文档。 | AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建 S3 存储桶。 |
| AWS DevOps |
创建 EMR 集群。 |
| AWS DevOps |
配置 EMR 集群的安全设置。 |
| AWS DevOps |
连接到 EMR 集群。 | 使用所提供的密钥对,通过 SSH 连接到 EMR 集群的主节点。 请确保密钥对文件与您的应用程序位于同一目录下。 运行以下命令为密钥对设置正确的权限并建立 SSH 连接:
| AWS DevOps |
部署 Spark 应用程序。 | 建立 SSH 连接后,您将进入 Hadoop 控制台。
| AWS DevOps |
监控 Spark 应用程序。 |
| AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
创建应用程序负载均衡器。 | 在 AWS 区域内设置目标组,在跨两个可用区的 Amazon EMR 主节点之间路由流量。 有关说明,请参阅 ELB 文档中的 Application Load Balancer 创建目标组。 | AWS DevOps |
在应用程序恢复控制器中配置可用区转移 | 在此步骤中,您需要使用应用程序恢复控制器中的可用区转移功能将流量转移到另一个可用区。
要使用 AWS CLI,请参阅应用程序恢复控制器文档中的 AWS CLI 带区域偏移的使用示例。 | AWS DevOps |
验证可用区转移配置和进度。 |
| AWS DevOps |
相关资源
AWS CLI 命令:
为竞价型实例配置 Amazon EMR 集群实例类型和最佳实践(Amazon EMR 文档)
IAM 中的安全最佳实践(IAM 文档)
使用实例配置文件(IAM 文档)
使用可用区转移和可用区自动转移来恢复 ARC 中的应用程序(应用程序恢复控制器文档)