使用 AWS DataSync 同步不同 AWS 區域中 Amazon EFS 檔案系統之間的資料 DataSync - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS DataSync 同步不同 AWS 區域中 Amazon EFS 檔案系統之間的資料 DataSync

由 Sarat Chandra Pothula (AWS) 和 Aditya Ambati (AWS) 建立

Summary

此解決方案提供強大的架構,可在不同 AWS 區域中的 Amazon Elastic File System (Amazon EFS) 執行個體之間有效且安全地進行資料同步。此方法可擴展,並提供受控的跨區域資料複寫。此解決方案可以增強您的災難復原和資料備援策略。

透過使用 AWS 雲端開發套件 (AWS CDK),此模式會使用 做為基礎設施的程式碼 (IaC) 方法來部署解決方案資源。AWS CDK 應用程式會部署必要的 AWS DataSync、Amazon EFS、Amazon Virtual Private Cloud (Amazon VPC) 和 Amazon Elastic Compute Cloud (Amazon EC2) 資源。此 IaC 提供可重複且版本控制的部署程序,完全符合 AWS 最佳實務。

先決條件和限制

先決條件

限制

  • 解決方案會繼承 DataSync 和 Amazon EFS 的限制,例如資料傳輸率、大小限制和區域可用性。如需詳細資訊,請參閱 AWS DataSync 配額Amazon EFS 配額

  • 此解決方案僅支援 Amazon EFS。DataSync 支援其他 AWS 服務,例如 Amazon Simple Storage Service (Amazon S3) 和 Amazon FSx for Lustre。不過,此解決方案需要修改,才能與這些其他服務同步資料。

架構

將資料複寫到不同區域中 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 來源和目的地位置,在主要和次要區域之間同步資料。

工具

AWS 服務

程式碼儲存庫

此模式的程式碼可在 GitHub Amazon EFS 跨區域 DataSync 專案儲存庫中使用。

最佳實務

遵循 TypeScript 中使用 AWS CDK 建立 IaC 專案的最佳實務中所述的最佳實務

史詩

任務描述所需的技能

複製專案儲存庫。

輸入下列命令以複製 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
任務描述所需的技能

登入主要區域中的 EC2 執行個體。

  1. 使用 AWS Systems Manager 的功能 Session Manager,登入主要區域中的 EC2 執行個體。如需說明,請參閱使用 AWS Systems Manager Session 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 Resource Name (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>

PrepareStatus、 和 VerifyStatus都有值 時TransferStatus,DataSync 任務即完成SUCCESS

AWS DevOps

登入次要區域中的 EC2 執行個體。

  1. 使用 AWS Systems Manager 的功能 Session Manager,登入次要區域中的 EC2 執行個體。如需說明,請參閱使用 AWS Systems Manager Session Manager 連線至 Linux 執行個體

  2. 將目錄變更為 Amazon EFS 掛載路徑。

    cd /mnt/efs
AWS DevOps

驗證複寫。

輸入下列命令,以確認暫存檔案存在於 Amazon EFS 檔案系統中。

ls -lrt tmptst.dat
AWS DevOps

相關資源

AWS 文件

其他 AWS 資源