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

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

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

Sarat Chandra Pothula 和 Aditya Ambati,Amazon Web Services

Summary

该解决方案提供了一个强大的框架,用于在不同 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 和 Amazon EFS 的限制,例如数据传输速率、大小限制和区域可用性。有关更多信息,请参阅 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 目录。在 SECONDARY_AWS_REGION 文件中,更新 Launcher.tsPRIMARY_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 资源