Lancez les instances à la demande (Réservations de capacité à la demande) - 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 les instances à la demande (Réservations de capacité à la demande)

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

Vous pouvez configurer open des réservations de capacité targeted à la demande (ODCR). Les ODCR ouverts couvrent 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 des ODCR ciblés dans la configuration du cluster. Pour déterminer si un ODCR est open outargeted, exécutez la commande AWS CLI EC2. describe-capacity-reservation

Vous pouvez également créer un ODCR dans un groupe de placement de clusters appelé réservation de capacité à la demande de groupe de placement de clusters (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, consultez Présentation des groupes de ressources. dans le Guide de l'utilisateur des Resource Groups et des balises.

Utilisation de l'ODCR avec AWS ParallelCluster

AWS ParallelClusterprend en charge les ODCR ouverts. Lorsque vous utilisez un ordinateur ODCR ouvert, vous n'avez pas besoin de spécifier quoi que ce soit 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.

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 EC2.

Vous commencez par créer des réservations de capacité et des groupes de ressources à l'aide des méthodes décrites dans la documentation associée à chacun d'eux. Vous devez utiliser les AWS CLI méthodes pour créer des groupes de réservation de capacité. Si vous utilisez leAWS 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, indiquez-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 plusieurs types d'instances avec Slurm.

La prise en charge des targeted ODCR est ajoutée 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 des informations sur la réservation à utiliser pour chaque ressource de calcul configurée dans. AWS ParallelCluster Ce mécanisme est compatible avec les targeted ODCR. Toutefois, lorsque vous utilisez des targeted ODCR, vous devez spécifier la configuration de run-instances remplacement. Les ODCR ciblés doivent être définis explicitement dans la commande AWS CLI run-instancesEC2. Pour déterminer si un ODCR est un ODCR open ou targeted exécutez la commande AWS CLI EC2. describe-capacity-reservation

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. Par conséquent, si un groupe de placement est requis pour votre application, utilisez un CPG ODCR. 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 de zone réserve de la capacité dans la zone de disponibilité spécifiée.

Si vous disposez d'instances réservées régionales, il n'y a pas de réservation de capacité et vous pouvez obtenir des erreurs de capacité insuffisante. Si vous disposez d'instances réservées zonales, vous disposez d'une réservation de capacité, 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. Vous n'avez rien à spécifier 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 de spécifier le 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 plusieurs types d'instances avec Slurm.

Vous pouvez remplacer les RunInstances paramètres 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 les réserves.

  • ${compute_resource_name}est la ressource de calcul à laquelle vous souhaitez appliquer les réserves.

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

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

Par exemple, le code 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 du dimensionnement 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, vous n'avez pas besoin de créer de groupe de ressources. Utilisez à 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_RESERVATIONvotre numéro de réservation de capacité et REGION_IDvotre 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 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, puis 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

    Chargez le fichier fichier 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

    Ensuite, utilisez la commande suivante pour créer le cluster. Remplacez-le cluster-config.yamlpar le nom de votre fichier de configuration, cluster-dlpar le nom de votre cluster et par 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 RunInstances à pour forcer le provisionnement de la partition à passer par la réservation de capacité à la demande.

    Les AWS ParallelCluster démons responsables du dimensionnement 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 des instances, vous pouvez consulter les fichiers journaux suivants :

    • /var/log/parallelcluster/clustermgtd(pour une 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 informations suivantes.

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

Mettre à jour les RunInstances remplacements

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 en forçant la fermeture d'une instance et attendez AWS ParallelCluster qu'ils soient remplacés. Vous pouvez le faire en mettant fin à l'instance depuis la console EC2 ou AWS CLI en configurant les nœuds Slurm dans un état ou. DOWN 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