Comment puis-je monter un système de fichiers Amazon FSx for Lustre existant sur AWS Batch dans un environnement de calcul géré ?

Date de la dernière mise à jour : 11/09/2020

Je souhaite monter un système de fichiers Amazon FSx for Lustre existant sur AWS Batch dans un environnement de calcul géré.

Brève description

Pour monter un système de fichiers Amazon FSx for Lustre existant sur vos conteneurs sans créer des Amazon Machine Images (AMI) personnalisées, vous pouvez utiliser un modèle de lancement Amazon Elastic Compute Cloud (Amazon EC2) avec AWS Batch.

Important : lorsque vous créez un système de fichiers Amazon FSx for Lustre, utilisez le même Amazon Virtual Private Cloud (Amazon VPC) et les mêmes sous-réseaux qui sont affectés à votre environnement de calcul.

Résolution

1.    Créez un système de fichiers Amazon FSx for Lustre, puis choisissez un type de déploiementde système de fichiers persistant ou temporaire.

Conseil : utilisez des systèmes de fichiers persistants pour le stockage et les charges de travail à plus long terme. Utilisez des systèmes de fichiers scratch pour le stockage temporaire et le traitement des données à plus court terme.

2.    Prenez note de l'ID de votre système de fichiers (par exemple, fs-12345678).

3.    Dans votre modèle de lancement, créez une section dédiée aux données utilisateur au format MIME. Pour plus d'informations, consultez la section Mime Multi Part Archive sur le site Web Cloud-init.

L'exemple suivant de fichier MIME à plusieurs parties configure la ressource de calcul pour installer le package Lustre 2.10 à partir de la bibliothèque Extras et monte un système de fichiers Amazon FSx for Lustre existant à /scratch. L'exemple suivant concerne Amazon Linux 2. Pour obtenir des instructions d'installation pour d'autres distributions Linux, consultez Installation du client Lustre.

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-12345678
- 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==--
\=

Remarque : remplacez fs-12345678, us-east-1, et xxxxxxxx par votre ID de système de fichiers, votre région AWS et votre nom de montage à 8 caractères.

4.    Lancez le modèle pour appeler les données utilisateur.

5.    Créez un fichier appelé mount-FSx-lustre.json et ajustez la taille du volume en fonction de vos besoins. Reportez-vous aux exemples suivants.

Exemple de modèle de lancement basé sur Amazon Linux 2 :

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

Exemple de modèle de lancement basé sur 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=="
}
}

Remarque : si vous ajoutez des données utilisateur à un modèle de lancement dans la console Amazon EC2, collez les données utilisateur en texte brut ou téléchargez les données utilisateur à partir d'un fichier. Si vous utilisez l'interface de ligne de commande AWS (AWS CLI) ou un kit SDK AWS, vous devez d'abord encoder les données utilisateur en base64. Ensuite, soumettez cette chaîne en tant que valeur du paramètre DonnéesUtilisateur lorsque vous appelez CréerUnModèleDeLancement.

6.    Créez un modèle de lancement basé sur le fichier mount-FSx-lustre.json que vous avez créé à l'étape 5.

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

Remarque : remplacez us-east-1 par votre région AWS.

Le résultat ressemble à ce qui suit :

{
    "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.    Créez un nouvel environnement de calcul et associez-le à votre modèle de lancement.

Important : par défaut, les environnements de calcul gérés par AWS Batch utilisent une version approuvée de l'AMI optimisée pour Amazon Elastic Container Service (Amazon ECS) pour les ressources de calcul. Vous devez définir explicitement l'ID d'AMI pour les AMI Amazon Linux 2 optimisées pour Amazon ECS et les autres distributions Linux.

Désormais, lorsque AWS Batch met en service des instances, le système de fichiers Amazon FSx Lustre est monté sur les instances de conteneur.

8.    Pour vérifier si le système de fichiers Amazon FSx Lustre est monté avec l'instance de conteneur, utilisez SSH pour vous connecter à l'instance lancée par AWS Batch, puis exécutez la commande suivante :

$ df -h

Le résultat ressemble à ce qui suit :

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

Remarque : /scratch est monté automatiquement.

9.    Créez une définition de tâche qui inclut le volume et le point de montage. Par exemple :

{
    "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.    Soumettez une tâche AWS Batch à l'aide de la définition de tâche à l'étape 8.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?