使用 AWS 在不同 AWS 区域的 Amazon EFS 文件系统之间同步数据 DataSync - AWS Prescriptive Guidance

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

使用 AWS 在不同 AWS 区域的 Amazon EFS 文件系统之间同步数据 DataSync

由 Sarat Chandra Pothula (AWS) 和 Aditya Ambati (AWS) 创作

摘要

该解决方案提供了一个强大的框架,用于在不同 AWS 区域的 Amazon Elastic File System (Amazon EFS) 实例之间进行高效、安全的数据同步。这种方法具有可扩展性,可提供受控的跨区域数据复制。该解决方案可以增强您的灾难恢复和数据冗余策略。

通过使用 AWS Cloud Development Kit (AWS CDK),此模式使用基础设施即代码 (IaC) 方法来部署解决方案资源。AWS CDK 应用程序部署了 AWS、 DataSync亚马逊 EFS、亚马逊虚拟私有云(亚马逊 VPC)和亚马逊弹性计算云(亚马逊 VPC EC2)的基本资源。此 IaC 提供了一个完全符合 AWS 最佳实践的可重复且受版本控制的部署流程。

先决条件和限制

先决条件

限制

  • 该解决方案继承了 Amazon EFS 的限制,例如数据传输速率、大小限制和区域可用性。 DataSync 有关更多信息,请参阅 AWS DataSync 配额和 A mazon EFS 配额

  • 此解决方案仅支持 Amazon EFS。 DataSync 支持其他 AWS 服务,例如亚马逊简单存储服务 (Amazon S3) Service 和 Amazon for Lust FSx re。但是,此解决方案需要修改才能与其他服务同步数据。

架构

将数据复制到不同区域的 EFS 文件系统的架构图

此解决方案部署了以下 AWS CDK 堆栈:

  • Amazon VPC 堆栈 — 此堆栈在主要和次要 AWS 区域中设置虚拟私有云 (VPC) 资源,包括子网、互联网网关和 NAT 网关。

  • Amazon EFS 堆栈 — 此堆栈将 Amazon EFS 文件系统部署到主区域和次要区域,并将它们连接到各自 VPCs的区域。

  • Amazon EC2 堆栈 — 此堆栈在主要和次要区域启动 EC2 实例。这些实例配置为挂载 Amazon EFS 文件系统,从而允许它们访问共享存储。

  • DataSync 位置堆栈 — 此堆栈使用名DataSyncLocationConstruct为的自定义构造在主要和次要区域中创建 DataSync 位置资源。这些资源定义了数据同步的端点。

  • DataSync 任务堆栈 — 此堆栈使用名DataSyncTaskConstruct为的自定义结构在主区域中创建 DataSync 任务。此任务配置为使用 DataSync 源位置和目标位置在主区域与次要区域之间同步数据。

工具

Amazon Web Services

代码存储库

此模式的代码可在 GitHub Amazon EFS 跨区域 DataSync 项目存储库中找到。

最佳实践

遵循中使用 AWS CDK 创建 IaC 项目的最佳实践中描述 TypeScript 的最佳实践。

操作说明

Task描述所需技能

克隆项目存储库。

输入以下命令以克隆 Amazon EFS 跨区域 DataSync 项目存储库。

git clone https://github.com/aws-samples/aws-efs-crossregion-datasync.git
AWS DevOps

安装 npm 依赖项。

输入以下命令。

npm ci
AWS DevOps

选择主要和次要区域。

在克隆的存储库中,导航到该src/infa目录。在Launcher.ts文件中,更新PRIMARY_AWS_REGIONSECONDARY_AWS_REGION值。使用相应的地区代码

const primaryRegion = { account: account, region: '<PRIMARY_AWS_REGION>' }; const secondaryRegion = { account: account, region: '<SECONDARY_AWS_REGION>' };
AWS DevOps

引导环境。

输入以下命令引导您要使用的 AWS 账户和 AWS 区域。

cdk bootstrap <aws_account>/<aws_region>

有关更多信息,请参阅 AWS CDK 文档中的引导

AWS DevOps

列出 AWS CDK 堆栈。

输入以下命令以查看应用程序中的 AWS CDK 堆栈列表。

cdk ls
AWS DevOps

合成 AWS CDK 堆栈。

输入以下命令,为 AWS CDK 应用程序中定义的每个堆栈生成一个 AWS CloudFormation 模板。

cdk synth
AWS DevOps

部署 AWS CDK 应用程序。

输入以下命令将所有堆栈部署到您的 AWS 账户,无需手动批准即可进行任何更改。

cdk deploy --all --require-approval never
AWS DevOps
Task描述所需技能

登录主区域中的 EC2 实例。

  1. 使用会话管理器(AWS Systems Manager 的一项功能)登录主区域中的 EC2 实例。有关说明,请参阅使用 AWS Systems Manager 会话管理器连接到您的 Linux 实例

  2. 将目录更改为 Amazon EFS 挂载路径。

    cd /mnt/efs
AWS DevOps

创建临时文件。

输入以下命令在 Amazon EFS 挂载路径中创建临时文件。

sudo dd if=/dev/zero \ of=tmptst.dat \ bs=1G \ seek=5 \ count=0 ls -lrt tmptst.dat
AWS DevOps

启动 DataSync 任务。

输入以下命令将临时文件从主区域复制到辅助区域,其中<ARN-task>是您的 DataSync 任务的 Amazon 资源名称 (ARN)。

aws datasync start-task-execution \ --task-arn <ARN-task>

该命令按以下格式返回任务执行的 ARN。

arn:aws:datasync:<region>:<account-ID>:task/task-execution/<exec-ID>

AWS DevOps

检查数据传输的状态。

输入以下命令来描述 DataSync 执行任务,其中<ARN-task-execution>是任务执行的 ARN。

aws datasync describe-task-execution \ --task-execution-arn <ARN-task-execution>

当、和VerifyStatus都具有值时 PrepareStatusTransferStatus, DataSync 任务就完成了SUCCESS

AWS DevOps

登录辅助区域中的 EC2 实例。

  1. 使用会话管理器(AWS Systems Manager 的一项功能)登录辅助区域中的 EC2 实例。有关说明,请参阅使用 AWS Systems Manager 会话管理器连接到您的 Linux 实例

  2. 将目录更改为 Amazon EFS 挂载路径。

    cd /mnt/efs
AWS DevOps

验证复制。

输入以下命令以验证临时文件是否存在于 Amazon EFS 文件系统中。

ls -lrt tmptst.dat
AWS DevOps

相关资源

AWS 文档

其他 AWS 资源