Lancez des instances avec des réservations de capacité à la demande (ODCR) - AWS ParallelCluster

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Lancez des instances avec des réservations de capacité à la demande (ODCR)

Avec les réservations de capacité à la demande (ODCR), vous pouvez réserver de la capacité pour les instances Amazon EC2 de votre cluster dans une zone de disponibilité spécifique. Ainsi, vous pouvez créer et gérer des réservations de capacité indépendamment des comptes de facturation proposés par Savings Plans ou les instances réservées régionales.

Vous pouvez configurer open ou targeted ODCR. Open ODCR couvre toutes les instances qui correspondent aux attributs ODCR. Ces attributs sont le type d'instance, la plateforme et la zone de disponibilité. Vous devez définir explicitement l'ODCR ciblé dans la configuration du cluster. Pour déterminer si un ODCR est open outargeted, exécutez la commande AWS CLI Amazon describe-capacity-reservationEC2.

Vous pouvez également créer un ODCR dans un groupe de placement de clusters appelé groupe de placement de clusters à la demande (CPG ODCR).

Plusieurs ODCR peuvent être regroupés dans un groupe de ressources. Cela peut être défini dans le fichier de configuration du cluster. Pour plus d'informations sur les groupes de ressources, voir Que sont les groupes de ressources ? dans le guide de l'utilisateur de Resource Groups and Tags.

Utilisation de l'ODCR avec AWS ParallelCluster

AWS ParallelCluster prend en charge l'ODCR ouvert. Lorsque vous utilisez un ODCR ouvert, il n'est pas nécessaire de spécifier quoi que ce soit dans AWS ParallelCluster. Les instances sont automatiquement sélectionnées pour le cluster. Vous pouvez spécifier un groupe de placement existant ou en AWS ParallelCluster créer un nouveau pour vous.

ODCR dans la configuration du cluster

À partir de AWS ParallelCluster la version 3.3.0, vous pouvez définir des ODCR dans le fichier de configuration du cluster, sans avoir à spécifier les remplacements des instances d'exécution Amazon EC2.

Vous commencez par créer des réservations de capacité et des groupes de ressources en utilisant les méthodes décrites dans la documentation associée pour chacun d'eux. Vous devez utiliser les AWS CLI méthodes pour créer des groupes de réservation de capacité. Si vous utilisez le AWS Management Console, vous ne pouvez créer que des groupes de ressources basés sur des balises ou des piles. Les groupes de ressources basés sur des balises et des piles ne sont pas pris en charge par AWS ParallelCluster ou AWS CLI lors du lancement d'instances avec des réservations de capacité.

Une fois les réservations de capacité et les groupes de ressources créés, spécifiez-les dans SlurmQueues/CapacityReservationTargetou SlurmQueues/ComputeResources/CapacityReservationTargetcomme indiqué dans l'exemple de configuration de cluster suivant. Remplacez les valeurs surlignées en rouge par vos valeurs valides.

Image: Os: os HeadNode: InstanceType: head_node_instance Networking: SubnetId: public_subnet_id Ssh: KeyName: key_name Scheduling: Scheduler: scheduler SlurmQueues: - Name: queue1 Networking: SubnetIds: - private_subnet_id ComputeResources: - Name: cr1 Instances: - InstanceType: instance MaxCount: max_queue_size MinCount: max_queue_size Efa: Enabled: true CapacityReservationTarget: CapacityReservationResourceGroupArn: capacity_reservation_arn
Avertissement
  • À partir de AWS ParallelCluster la version 3.3.0, nous ne recommandons pas cette méthode. Cette section reste une référence pour les implémentations utilisant des versions antérieures.

  • Cette méthode n'est pas compatible avec l'allocation de types d'instances multiples avec Slurm.

Support pour les targeted ODCR a été ajouté dans AWS ParallelCluster la version 3.1.1. Dans cette version, un mécanisme a été introduit qui remplace les RunInstances paramètres EC2 et transmet les informations relatives à la réservation à utiliser pour chaque ressource de calcul configurée dans. AWS ParallelCluster Ce mécanisme est compatible avec l'targetedODCR. Toutefois, lorsque vous utilisez targeted ODCR, vous devez spécifier la configuration de run-instances remplacement. Les ODCR ciblés doivent être définis explicitement dans la commande Amazon AWS CLI run-instancesEC2. Pour déterminer si un ODCR est open un ODCR, targeted exécutez la commande AWS CLI Amazon describe-capacity-reservationEC2.

Plusieurs ODCR peuvent être regroupés dans un groupe de ressources. Cela peut être utilisé dans le cadre du remplacement des instances d'exécution pour cibler plusieurs ODCR en même temps.

Si vous utilisez un targeted ODCR, vous pouvez spécifier un groupe de placement. Toutefois, vous devez également spécifier une configuration de run-instances remplacement.

Supposons que vous ayez AWS créé un targeted ODCR pour vous ou que vous disposiez d'un ensemble spécifique d'instances réservées. Dans ce cas, vous ne pouvez pas spécifier de groupe de placement. Les règles configurées par AWS peuvent entrer en conflit avec le paramètre du groupe de placement. Ainsi, si un groupe de placement est requis pour votre application, utilisez un ODCR CPG. Dans les deux cas, vous devez également spécifier la configuration de run-instances remplacement.

Si vous utilisez un ODCR CPG, vous devez spécifier la configuration de run-instances remplacement et vous devez spécifier le même groupe de placement dans la configuration du cluster.

Utilisation d'instances réservées avec AWS ParallelCluster

Les instances réservées sont différentes des réservations de capacité (ODCR). Il existe deux types d'instances réservées. Une instance réservée régionale ne réserve pas de capacité. Une instance réservée zonale réserve de la capacité dans la zone de disponibilité spécifiée.

Si vous avez des instances réservées régionales, il n'y a aucune réservation de capacité et vous pouvez obtenir des erreurs de capacité insuffisante. Si vous avez des instances réservées zonales, vous pouvez réserver des capacités, mais il n'existe aucun paramètre d'run-instancesAPI que vous pouvez utiliser pour les spécifier.

Les instances réservées sont prises en charge par toutes les AWS ParallelCluster versions. Il n'est pas nécessaire de spécifier quoi que ce soit AWS ParallelCluster et les instances sont automatiquement sélectionnées.

Lorsque vous utilisez des instances réservées zonales, vous pouvez éviter d'éventuelles erreurs de capacité insuffisante en omettant la spécification du groupe de placement dans la configuration du cluster.

Avertissement
  • À partir de AWS ParallelCluster la version 3.3.0, nous ne recommandons pas cette méthode. Cette section reste une référence pour les implémentations utilisant des versions antérieures.

  • Cette méthode n'est pas compatible avec l'allocation de types d'instances multiples avec Slurm.

Vous pouvez remplacer les paramètres Amazon RunInstances EC2 pour chaque ressource de calcul configurée dans une file d'attente de cluster. Pour ce faire, créez le /opt/slurm/etc/pcluster/run_instances_overrides.json fichier sur le nœud principal du cluster avec le contenu de l'extrait de code suivant :

  • ${queue_name}est le nom de la file d'attente à laquelle vous souhaitez appliquer des remplacements.

  • ${compute_resource_name}est la ressource de calcul à laquelle vous souhaitez appliquer des dérogations.

  • ${overrides}est un objet JSON arbitraire qui contient une liste de RunInstances remplacements à utiliser pour la combinaison spécifique de file d'attente et de type d'instance. La syntaxe des overrides doit suivre les mêmes spécifications que celles documentées dans un appel run_instances boto3.

{     "${queue_name}": {         "${compute_resource_name}": {             ${overrides}         },         ...     },     ... }

Par exemple, le JSON suivant configure le groupe ODCR group_arn à utiliser pour les p4d.24xlarge instances configurées dans my-queue et. my-compute-resource

{     "my-queue": {         "my-compute-resource": {             "CapacityReservationSpecification": {                 "CapacityReservationTarget": {                     "CapacityReservationResourceGroupArn": "group_arn"                 }             }         }     } }

Une fois ce fichier JSON généré, les AWS ParallelCluster démons responsables de la mise à l'échelle du cluster utilisent automatiquement la configuration de remplacement pour les lancements d'instances. Pour vérifier que les paramètres spécifiés sont utilisés pour le provisionnement des instances, consultez les fichiers journaux suivants :

  • /var/log/parallelcluster/clustermgtd(pour la capacité statique)

  • /var/log/parallelcluster/slurm_resume.log(pour la capacité dynamique)

Si les paramètres sont corrects, vous trouverez une entrée de journal contenant les éléments suivants :

Found RunInstances parameters override. Launching instances with: <parameters_list>
Avertissement
  • À partir de AWS ParallelCluster la version 3.3.0, nous ne recommandons pas cette méthode. Cette section reste une référence pour les implémentations utilisant des versions antérieures.

  • Cette méthode n'est pas compatible avecAllocation de plusieurs types d'instances avec Slurm.

  1. Créez un groupe de ressources pour regrouper les capacités.

    $ aws resource-groups create-group --name EC2CRGroup \   --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
    Note

    Un groupe de ressources ne prend pas en charge les ressources partagées par d'autres comptes.

    Si l'ODCR cible est partagé par un autre compte, il n'est pas nécessaire de créer un groupe de ressources. À utiliser à la CapacityReservationId place d'un groupe de ressources à l'étape 3.

    #!/bin/bash set -e # Override run_instance attributes cat > /opt/slurm/etc/pcluster/run_instances_overrides.json << EOF {     "my-queue": {         "my-compute-resource": {             "CapacityReservationSpecification": {                 "CapacityReservationTarget": {                     "CapacityReservationId": "cr-abcdef01234567890"                 }             }         }     } } EOF

    Ajoutez des réservations de capacité au groupe de ressources. Chaque fois que vous créez un nouvel ODCR, ajoutez-le à la réservation de groupe. ACCOUNT_IDRemplacez-le par votre identifiant de compte, PLACEHOLDER_CAPACITY_RESERVATIONpar votre numéro de réservation de capacité et REGION_IDpar votre Région AWS identifiant (par exemple, us-east-1).

    $ aws resource-groups group-resources --region REGION_ID --group EC2CRGroup \   --resource-arns arn:aws:ec2:REGION_ID:ACCOUNT_ID:capacity-reservation/PLACEHOLDER_CAPACITY_RESERVATION

    Créez un document de politique sur votre ordinateur local. ACCOUNT_IDRemplacez-le par votre identifiant de compte et REGION_IDpar votre Région AWS identifiant (par exemple, us-east-1).

    cat > policy.json << EOF {     "Version": "2012-10-17",     "Statement": [         {             "Sid": "RunInstancesInCapacityReservation",             "Effect": "Allow",             "Action": "ec2:RunInstances",             "Resource": [                 "arn:aws:ec2:REGION_ID:ACCOUNT_ID:capacity-reservation/*",                 "arn:aws:resource-groups:REGION_ID:ACCOUNT_ID:group/*"             ]         }     ] } EOF
  2. Créez la politique IAM qui vous convient à Compte AWS l'aide du fichier json que vous avez créé.

    $ aws iam create-policy --policy-name RunInstancesCapacityReservation --policy-document file://policy.json
  3. Créez le script de post-installation suivant localement sur l'instance et nommez-lepostinstall.sh.

    ACCOUNT_IDRemplacez-le par votre Compte AWS identifiant et REGION_ID par votre Région AWS identifiant (par exemple, us-east-1).

    #!/bin/bash set -e # Override run_instance attributes cat > /opt/slurm/etc/pcluster/run_instances_overrides.json << EOF {     "my-queue": {         "my-compute-resource": {             "CapacityReservationSpecification": {                 "CapacityReservationTarget": {                     "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:REGION_ID:ACCOUNT_ID:group/EC2CRGroup"                 }             }         }     } } EOF

    Téléchargez le fichier dans un compartiment Amazon S3. Remplacez S3_NAME_BUCKET par le nom de votre compartiment S3 spécifique.

    $ aws s3 mb s3://S3_NAME_BUCKET aws s3 cp postinstall.sh s3://S3_NAME_BUCKET/postinstall.sh
  4. Créez la configuration du cluster local en remplaçant les espaces réservés par vos propres valeurs.

    Region: REGION_ID Image:   Os: alinux2 HeadNode:   InstanceType: c5.2xlarge   Ssh:     KeyName: YOUR_SSH_KEY   Iam:     S3Access:       - BucketName: S3_NAME_BUCKET     AdditionalIamPolicies:       - Policy: arn:aws:iam::ACCOUNT_ID:policy/RunInstancesCapacityReservation   ## This post-install script is executed after the node is configured.   ## It is used to install scripts at boot time and specific configurations   ## In the script below we are overriding the calls to RunInstance to force   ## the provisioning of our my-queue partition to go through   ## the On-Demand Capacity Reservation   CustomActions:     OnNodeConfigured:       Script: s3://S3_NAME_BUCKET/postinstall.sh   Networking:     SubnetId: YOUR_PUBLIC_SUBNET_IN_TARGET_AZ Scheduling:   Scheduler: slurm   SlurmQueues:     - Name: my-queue       ComputeResources:         - MinCount: 0           MaxCount: 100           InstanceType: p4d.24xlarge           Name: my-compute-resource           Efa:             Enabled: true       Networking:         ## PlacementGroup:         ##   Enabled: true ## Keep PG disabled if using targeted ODCR         SubnetIds:           - YOUR_PRIVATE_SUBNET_IN_TARGET_AZ
  5. Créez le cluster.

    Utilisez la commande suivante pour créer le cluster. cluster-config.yamlRemplacez-le par le nom de votre fichier de configuration, cluster-dlpar le nom de votre cluster, et REGION_ID par votre ID de région (par exemple, us-east-1).

    $ pcluster create-cluster --cluster-configuration cluster-config.yaml --cluster-name cluster-dl --region REGION_ID

    Une fois le cluster créé, le script de post-installation s'exécute dans le nœud principal. Le script crée le run_instances_overrides.json fichier et remplace les appels pour RunInstances forcer le provisionnement de la partition à passer par la réservation de capacité à la demande.

    Les AWS ParallelCluster démons responsables de la mise à l'échelle du cluster utilisent automatiquement cette configuration pour les nouvelles instances lancées. Pour vérifier que les paramètres spécifiés sont utilisés pour provisionner les instances, vous pouvez consulter les fichiers journaux suivants :

    • /var/log/parallelcluster/clustermgtd(pour la capacité statique - MinCount > 0)

    • /var/log/parallelcluster/slurm_resume.log(pour la capacité dynamique)

    Si les paramètres sont corrects, vous trouverez une entrée de journal contenant les éléments suivants.

    Found RunInstances parameters override. Launching instances with: <parameters_list>

Mettre à jour RunInstances les dérogations

Vous pouvez mettre à jour la configuration JSON générée à tout moment sans arrêter le parc informatique. Une fois les modifications appliquées, toutes les nouvelles instances sont lancées avec la configuration mise à jour. Si vous devez appliquer la configuration mise à jour aux nœuds en cours d'exécution, recyclez les nœuds en forçant la fermeture d'une instance et AWS ParallelCluster en attendant de les remplacer. Vous pouvez le faire en mettant fin à l'instance depuis la console Amazon EC2 AWS CLI ou en définissant Slurm les nœuds dans DOWN l'état ou. DRAIN

Utilisez la commande suivante pour définir le Slurm nœud sur DOWN ouDRAIN.

$ scontrol update nodename=my-queue-dy-my-compute-resource-1 state=down reason=your_reason scontrol update nodename=my-queue-dy-my-compute-resource-1 state=drain reason=your_reason