Como montar um sistema de arquivos Amazon FSx para Lustre existente no AWS Batch em um ambiente de computação gerenciado?

5 minuto de leitura
0

Quero montar um sistema de arquivos Amazon FSx para Lustre existente no AWS Batch em um ambiente de computação gerenciado. Existe uma maneira de configurar isso sem criar imagens de máquina (AMIs) personalizadas da Amazon?

Breve descrição

Use um modelo de execução do Amazon Elastic Compute Cloud (Amazon EC2) com o AWS Batch. Essa configuração permite que você monte um sistema de arquivos do Amazon FSx para Lustre existente em seus contêineres sem criar AMIs personalizadas.

Importante: ao criar o sistema de arquivos, use a mesma Amazon Virtual Private Cloud (Amazon VPC) e sub-redes atribuídas ao seu ambiente computacional.

Resolução

1.    Crie um sistema de arquivos do Amazon FSx para Lustre. Em seguida, escolha um tipo de implantação de sistema de arquivos persistente ou temporário.

Dica: use sistemas de arquivos persistentes para armazenamento e cargas de trabalho de longo prazo. Use sistemas de arquivos temporários para armazenamento temporário e processamento de dados de curto prazo.

2.    Copie o ID do sistema de arquivos (por exemplo, fs-12345678). Você precisa do ID do sistema de arquivos para executar seu modelo de execução.

3.    Crie um modelo de execução que inclua uma seção de dados do usuário e use o formato de arquivo MIME com várias partes. Para mais informações, consulte Arquivo multiparte Mime no site do Cloud-init.

Exemplo de arquivo multiparte MIME do Amazon Linux 2

Importante: substitua fs-12345678 pelo ID do sistema de arquivos. Substitua us-east-1 pela sua região da AWS. Substitua xxxxxxxx pelo nome de montagem de oito caracteres do 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==--

Observação: esse exemplo de arquivo multiparte MIME configura o recurso computacional para instalar o pacote Lustre 2.10 a partir da biblioteca Extras. O arquivo também monta um sistema de arquivos Amazon FSx para Lustre existente em região da AWS. Para obter instruções de instalação para outras distribuições Linux, consulte Como instalar o cliente Lustre.

4.    Execute o modelo para invocar os dados do usuário.

5.    Crie um arquivo chamado mount-fsx-lustre.json.

Observação: ajuste o tamanho do volume com base no seu caso de uso.

Exemplo de modelo de execução do Amazon Linux 2

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

Exemplo de modelo de execução do 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=="
  }
}

Observação: se você adicionar dados do usuário a um modelo de execução no console do Amazon EC2, certifique-se de: Colar os dados do usuário como texto sem formatação. -ou- Carregar os dados do usuário de um arquivo.

Se você usa a AWS Command Line Interface (AWS CLI) ou um AWS SDK, você deve primeiro codificar os dados do usuário em base64. Em seguida, envie essa string como o valor do parâmetro UserData ao chamar createLaunchTemplate.

6.    Execute o seguinte comando da AWS CLI para criar um modelo de lançamento com base no arquivo mount-fsx-lustre.json que você criou na etapa 5:

Importante: Substitua us-east-1 pela sua região da AWS.

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

Exemplo de saída do comando 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.    Crie um novo ambiente computacional e associe esse ambiente ao seu modelo de execução.

Importante: por padrão, os ambientes computacionais gerenciados pelo AWS Batch usam uma versão aprovada da AMI otimizada do Amazon Elastic Container Service (Amazon ECS) para recursos computacionais. Você deve definir explicitamente o ID da AMI para as AMIs do Amazon Linux 2 otimizadas para o Amazon ECS e outras distribuições Linux.

Quando o AWS Batch ativa instâncias, o sistema de arquivos do Amazon FSx para Lustre é montado nas instâncias de contêiner.

8.    Verifique se o sistema de arquivos está montado com a instância de contêiner usando SSH para se conectar à instância iniciada pelo AWS Batch. Em seguida, execute o seguinte comando Linux df:

$ df -h

Exemplo de saída do comando 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

Observação: /scratch é montado automaticamente.

9.    Crie uma definição de trabalho no AWS Batch que inclua o volume e o ponto de montagem.

Exemplo de definição de trabalho do 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.    Envie um trabalho do AWS Batch usando a definição de trabalho que você criou na etapa 9.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos