如何在托管式计算环境中将现有 Amazon FSx for Lustre 文件系统挂载到 AWS Batch?
我想在托管式计算环境中将现有 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 文件系统。然后,选择持久性或临时性文件系统部署类型。
**提示:**对于长期存储和工作负载,请使用持久性文件系统。对于临时存储和短期数据处理,请使用暂存文件系统。
2. 复制文件系统 ID(例如 fs-12345678)。您需要文件系统 ID 以运行启动模板。
3. 创建启动模板,该模板包括用户数据部分,并使用 MIME 分段文件格式。有关更多信息,请参阅 Cloud-init 网站上的 Mime 分段归档。
Amazon Linux 2 MIME 分段文件示例
**重要提示:**将 fs-12345678 替换为文件系统 ID。将 us-east-1 替换为 AWS 区域。将 xxxxxxxx 替换为八个字符的 Amazon FSx 挂载名称。
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 客户端。
4. 启动模板以调用用户数据。
5. 创建一个名为 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 参数的值提交。
6. 运行以下 AWS CLI 命令,以基于您在步骤 5 中创建的 mount-fsx-lustre.json 文件创建启动模板:
**重要提示:**将 us-east-1 替换为 AWS 区域。
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 } }
7. 创建新的计算环境并将该环境与您的启动模板相关联。
**重要提示:**默认情况下,AWS Batch 托管计算环境使用适合于计算资源的经批准 Amazon Elastic Container Service (Amazon ECS) 优化 AMI 版本。您必须明确设置经 Amazon ECS 优化的 Amazon Linux 2 AMI 和其他 Linux 发行版的 AMI ID。
当 AWS Batch 启动实例时,Amazon FSx for Lustre 文件系统现在将挂载到容器实例上。
8. 使用 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 是自动挂载。
9. 在 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": [] } }
10. 使用您在步骤 9 中创建的任务定义提交 AWS Batch 任务。
相关内容
- AWS 官方已更新 10 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 1 年前