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.

Breve descrição

Use um modelo de execução do Amazon Elastic Compute Cloud (Amazon EC2) com o AWS Batch. Essa configuração monta um sistema de arquivos Amazon FSx para Lustre existente para seus contêineres sem criar uma Imagem de máquina da Amazon (AMI) personalizada.

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

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para montar um sistema de arquivos Amazon FSx para Lustre existente no AWS Batch em um ambiente de computação gerenciado, realize as seguintes etapas:

  1. Crie um sistema de arquivos Amazon FSx para Lustre. Em seguida, escolha um tipo de implantação de sistema de arquivos persistente ou scratch.
    Observação: use sistemas de arquivos persistentes para armazenamento e cargas de trabalho de longo prazo. Use sistemas de arquivos scratch para armazenamento temporário e processamento de dados de curto prazo.

  2. Copie o ID do seu sistema de arquivos (por exemplo, fs-0123456789abcdef0). Você precisa ter o 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 obter mais informações, consulte Arquivo Mime com várias partes no site do Cloud-init.
    Veja o seguinte exemplo de arquivo MIME com várias partes do Amazon Linux 2. Substitua fs-0123456789abcdef0 pelo ID do seu sistema de arquivos, us-east-1 pela sua região da AWS e xxxxxxxx pelo nome da montagem de oito caracteres do Amazon FSx:

    Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
    MIME-Version: 1.0
    
    --==MYBOUNDARY==
    Content-Type: text/cloud-boothook; charset="us-ascii"
    
    file_system_id=fs-0123456789abcdef0
    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}.fsx.${region}.amazonaws.com@tcp:/${fsx_mount_name} ${fsx_directory}
    
    --==MYBOUNDARY==--

    Observação: Esse exemplo de arquivo MIME com várias partes 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 /scratch. Para obter instruções de instalação para outras distribuições Linux, consulte Como instalar o cliente Lustre.

  4. Inicie o modelo para invocar os dados do usuário, conforme mostrado no seguinte exemplo do Amazon Linux 2:

    {  "LaunchTemplateName": "user-data",
      "LaunchTemplateData": {
        "UserData": "TUlNRS1W...<base64 encoded userdata>..."
      }
    }
    

    Observação: Se você adicionar dados do usuário a um modelo de execução no console do Amazon EC2, certifique-se de fazer o seguinte: cole os dados do usuário como texto simples ou faça o upload dos dados do usuário de um arquivo. Se você usa a AWS CLI ou um AWS SDK, primeiro, é preciso codificar os dados do usuário em base64. Para obter mais informações, consulte Codificar para o formato base64 no site base64encode. Em seguida, envie essa string como o valor do parâmetro UserData ao chamar createLaunchTemplate.

  5. Crie um arquivo chamado mount-fsx-lustre.json.
    Observação: ajuste o tamanho do volume com base no seu caso de uso.

  6. Execute o comando da AWS CLI create-launch-template para criar um modelo de execução com base no arquivo mount-fsx-lustre.json que você criou na etapa 5. Substitua us-east-1 pela sua Região:

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

    Exemplo de saída:

    {  "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. Quando o AWS Batch ativa instâncias, o sistema de arquivos do Amazon FSx para Lustre é montado nas instâncias de contêiner.
    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.

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

    $ df -h

    Exemplo de saída:

    Filesystem                                  Size      Used    Avail    Used%   Mounted ondevtmpfs                                    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:

    {  "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. Para enviar um trabalho do AWS Batch, use a definição de trabalho criada na etapa 9.

AWS OFICIAL
AWS OFICIALAtualizada há 6 meses