관리형 컴퓨팅 환경에서 기존 Amazon FSx for Lustre 파일 시스템을 AWS Batch에 탑재하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 2월 23일

관리형 컴퓨팅 환경에서 기존 Amazon FSx for Lustre 파일 시스템을 AWS Batch에 탑재하려고 합니다. Amazon Machine Image(AMI)를 생성하지 않고 이를 설정할 수 있는 방법이 있습니까?

간략한 설명

AWS Batch를 갖춘 템플릿과 함께 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스를 사용합니다. 이 구성을 사용하면 사용자 지정 AMI를 생성하지 않고도 기존 Amazon FSx for Lustre 파일 시스템을 컨테이너에 마운트할 수 있습니다.

중요: 파일 시스템을 생성할 때 컴퓨팅 환경에 할당된 것과 동일한 Amazon Virtual Private Cloud(Amazon VPC)와 서브넷을 사용합니다.

해결 방법

1.    Amazon FSx for Lustre 파일 시스템을 생성합니다. 그런 다음, 영구 또는 Scratch 파일 시스템 배포 유형을 선택합니다.

팁: 장기 스토리지 및 워크로드에는 영구 파일 시스템을 사용합니다. 임시 스토리지 및 단기 데이터 처리에는 Scratch 파일 시스템을 사용합니다.

2.    파일 시스템 ID를 복제합니다(예: fs-12345678). 시작 템플릿을 실행하려면 파일 시스템 ID가 필요합니다.

3.    사용자 데이터 섹션을 포함하고 MIME 멀티파트 파일 형식을 사용하는 시작 템플릿을 생성합니다. 자세한 내용은 Cloud-init 웹 사이트의 Mime Multi Part Archive를 참조하세요.

예제: Amazon Linux 2 MIME 멀티파트 파일

중요: fs-12345678을 파일 시스템 ID로 바꿉니다. us-east-1을 사용자의 AWS 리전으로 바꿉니다. xxxxxxxx를 8자리 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 패키지를 설치하도록 계산 리소스를 구성합니다. 또한 이 파일은 기존 Amazon FSx for Lustre 파일 시스템을 /scratch에 마운트합니다. 다른 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로 인코딩해야 합니다. 해당 문자열을 UserData 파라미터의 값으로 제출하여 CreateLaunchTemplate을 호출합니다.

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.    AWS Batch에서 시작한 인스턴스에 연결하기 위해 SSH를 사용하여 컨테이너 인스턴스에 파일 시스템이 탑재되었는지 확인합니다. 그런 다음, 다음 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 작업을 제출합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?