如何在受管運算環境中將現有的 Amazon FSx for Lustre 檔案系統掛接到 AWS Batch?

3 分的閱讀內容
0

我想要在受管運算環境中將現有的 Amazon FSx for Lustre 檔案系統掛接到 AWS Batch。是否可在不建立自訂 Amazon Machine Image (AMI) 的情況下進行設定?

簡短描述

將 Amazon Elastic Compute Cloud (Amazon EC2) 啟動範本與 AWS Batch 搭配使用。此組態允許您將現有 Amazon FSx for Lustre 檔案系統掛接到您的容器,而無需建立自訂 AMI。

**重要:**建立檔案系統時,請使用指派給運算環境的相同 Amazon Virtual Private Cloud (Amazon VPC) 和子網路。

解決方法

  1. 建立一個 Amazon FSx for Lustre 檔案系統。然後,選擇持久性或暫存檔案系統部署類型

**提示:**對於長期儲存和工作負載,請使用持久性檔案系統。對於暫時儲存和短期資料處理,請使用暫存檔案系統。

  1. 複製您的檔案系統 ID (例如 fs-12345678)。您需要檔案系統 ID 來執行啟動範本。

  2. 建立啟動範本,其中包含使用者資料區段,並使用 MIME 分段檔案格式。如需詳細資訊,請參閱 Cloud-init 網站上的 Mime 分段封存

Amazon Linux 2 MIME 分段檔案範例

**重要:**使用您的檔案系統 ID 替換 fs-12345678。使用您的 AWS 區域替換 us-east-1。使用八個字元的 Amazon FSx 掛接名稱取代 xxxxxxxx

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

runcmd:
- file_system_id_01=fs-09c9ae4593b53a741
- region=us-east-1
- fsx_directory=/scratch
- fsx_mount_name=xxxxxxxx
- amazon-linux-extras install -y lustre2.10
- mkdir -p ${fsx_directory}
- mount -t lustre -o noatime,flock ${file_system_id_01}.fsx.${region}.amazonaws.com@tcp:/${fsx_mount_name} ${fsx_directory}

--==MYBOUNDARY==--

**注意:**此範例 MIME 分段檔案將運算資源設定為安裝 Extras 程式庫中的 Lustre 2.10 套件。此檔案還會在 /scratch 掛接現有 Amazon FSx for Lustre 檔案系統。如需其他 Linux 發行版的安裝說明,請參閱安裝 Lustre 用戶端

  1. 啟動範本以叫用使用者資料。

  2. 建立名為 mount-fsx-lustre.json 的檔案。

**注意:**根據您的使用情況調整磁碟區大小。

Amazon Linux 2 啟動範本範例

{
  "LaunchTemplateName": "user-data",
  "LaunchTemplateData": {
    "BlockDeviceMappings": [
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "VolumeSize": 30,
          "VolumeType": "gp2"
        },
        "DeviceName": "/dev/xvda"
      }
    ],
    "UserData": "TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PU1ZQk9VTkRBUlk9PSIKCi0tPT1NWUJPVU5EQVJZPT0KQ29udGVudC1UeXBlOiB0ZXh0L2Nsb3VkLWNvbmZpZzsgY2hhcnNldD0idXMtYXNjaWkiCgpwYWNrYWdlczoKLSBhbWF6b24tZWZzLXV0aWxzCgpydW5jbWQ6Ci0gZmlsZV9zeXN0ZW1faWRfMDE9ZnMtODc0MTc4MDYgICAgIAotIGVmc19kaXJlY3Rvcnk9L21udC9lZnMKCi0gbWtkaXIgLXAgJHtlZnNfZGlyZWN0b3J5fQotIGVjaG8gIiR7ZmlsZV9zeXN0ZW1faWRfMDF9Oi8gJHtlZnNfZGlyZWN0b3J5fSBlZnMgdGxzLF9uZXRkZXYiID4+IC9ldGMvZnN0YWIKLSBtb3VudCAtYSAtdCBlZnMgZGVmYXVsdHMKCi0tPT1NWUJPVU5EQVJZPT0tLQ=="
  }
}

Amazon Linux 1 啟動範本範例

{
  "LaunchTemplateName": "userdata",
  "LaunchTemplateData": {
    "BlockDeviceMappings": [
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "VolumeSize": 8,
          "VolumeType": "gp2"
        },
        "DeviceName": "/dev/xvda"
      },
      {
        "Ebs": {
          "DeleteOnTermination": true,
          "VolumeSize": 22,
          "VolumeType": "gp2"
        },
        "DeviceName": "/dev/xvdcz"
      }
    ],
    "UserData": "TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PU1ZQk9VTkRBUlk9PSIKCi0tPT1NWUJPVU5EQVJZPT0KQ29udGVudC1UeXBlOiB0ZXh0L2Nsb3VkLWNvbmZpZzsgY2hhcnNldD0idXMtYXNjaWkiCgpwYWNrYWdlczoKLSBhbWF6b24tZWZzLXV0aWxzCgpydW5jbWQ6Ci0gZmlsZV9zeXN0ZW1faWRfMDE9ZnMtODc0MTc4MDYgICAgIAotIGVmc19kaXJlY3Rvcnk9L21udC9lZnMKCi0gbWtkaXIgLXAgJHtlZnNfZGlyZWN0b3J5fQotIGVjaG8gIiR7ZmlsZV9zeXN0ZW1faWRfMDF9Oi8gJHtlZnNfZGlyZWN0b3J5fSBlZnMgdGxzLF9uZXRkZXYiID4+IC9ldGMvZnN0YWIKLSBtb3VudCAtYSAtdCBlZnMgZGVmYXVsdHMKCi0tPT1NWUJPVU5EQVJZPT0tLQ=="
  }
}

**注意:**如果您將使用者資料新增至 Amazon EC2 主控台中的啟動範本,請確保執行下列其中一項操作: 以純文字格式貼上使用者資料,或從檔案上傳使用者資料。

如果您使用 AWS Command Line Interface (AWS CLI) 或 AWS SDK,則必須先對使用者資料進行 base64 編碼。然後,在呼叫 CreateLaunchTemplate 時,將該字串提交為 UserData 參數的值。

  1. 執行下列 AWS CLI 命令,以根據您在步驟 5 中建立的 mount-fsx-lustre.json 檔案建立啟動範本

**重要:**使用您的 AWS 區域替換 us-east-1

aws ec2 --region us-east-1 create-launch-template --cli-input-json file://mount-fsx-lustre.json

create-launch-template 命令輸出範例

{
  "LaunchTemplate": {
    "LaunchTemplateId": "lt-08cb09d54bcf551f3",
    "LaunchTemplateName": "fsx-test",
    "CreateTime": "2020-06-30T17:13:22.000Z",
    "CreatedBy": "arn:aws:iam::12345678999:user/test",
    "DefaultVersionNumber": 1,
    "LatestVersionNumber": 1
  }
}
  1. 建立新的運算環境,並將該環境與您的啟動範本建立關聯。

**重要:**預設情況下,AWS Batch 受管運算環境會使用適用於運算資源的已核准 Amazon Elastic Container Service (Amazon ECS) 最佳化 AMI 版本。您必須明確為 Amazon ECS 最佳化的 Amazon Linux 2 AMI 及其他 Linux 發行版設定 AMI ID。

當 AWS Batch 啟動執行個體時,Amazon FSx for Lustre 檔案系統現在將掛接到容器執行個體上。

  1. 使用 SSH 連接至由 AWS Batch 啟動的執行個體,檢查檔案系統是否隨著容器執行個體一起掛接。然後,執行下列 Linux df 命令:
$ df -h

df 命令輸出範例

Filesystem                                  Size      Used    Avail    Used%   Mounted on
devtmpfs                                    3.9G        0       3.9G     0%       /dev
tmpfs                                       3.9G        0       3.9G     0%       /dev/shm
tmpfs                                       3.9G     448K       3.9G     1%       /run
tmpfs                                       3.9G        0       3.9G     0%       /sys/fs/cgroup
/dev/xvda1                                   30G     4.2G        25G    15%       /
172.31.79.79@tcp:/xxxxxxxx                  1.1T     4.5M       1.1T     1%       /scratch
tmpfs                                       798M       0        798M     0%       /run/user/1000

注意:****/scratch 會自動掛接。

  1. 在 AWS Batch 中建立工作定義,其中包含磁碟區和掛接點。

AWS Batch 工作定義範例

{
  "jobDefinitionName": "Fsx-sample",
  "jobDefinitionArn": "arn:aws:batch:us-east-1:12345678999:job-definition/userdata:1",
  "revision": 1,
  "status": "ACTIVE",
  "type": "container",
  "parameters": {},
  "containerProperties": {
    "image": "busybox",
    "vcpus": 1,
    "memory": 1024,
    "command": [],
    "volumes": [
      {
        "host": {
          "sourcePath": "/scratch"
        },
        "name": "Scratch"
      }
    ],
    "environment": [],
    "mountPoints": [
      {
        "containerPath": "/scratch",
        "sourceVolume": "Scratch"
      }
    ],
    "ulimits": [],
    "resourceRequirements": []
  }
}
  1. 使用您在步驟 9 中建立的工作定義提交 AWS Batch 工作

AWS 官方
AWS 官方已更新 2 年前