

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)
<a name="launch-instances-odcr-v3"></a>

Avec les [réservations de capacité à la demande (ODCR)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html), 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](https://aws.amazon.com/savingsplans/) ou [les instances réservées régionales](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/reserved-instances-scope.html).

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` ou`targeted`, exécutez la commande AWS CLI Amazon [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html)EC2.

Vous pouvez également créer un ODCR dans un groupe de placement de clusters appelé groupe de [placement de clusters à la demande (CPG ODCR](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-cpg.html)).

Plusieurs ODCRs 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 ?](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html) dans le *guide de l'utilisateur de Resource Groups and Tags*.

## Utilisation de l'ODCR avec AWS ParallelCluster
<a name="odcr-parallelcuster-v3"></a>

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
<a name="odcr-parallelcuster-config-v3"></a>

À 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é](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservations-using.html) et [des groupes de ressources](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-cr-group.html) en utilisant les méthodes décrites dans la documentation associée pour chacun d'entre 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`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)/[`CapacityReservationTarget`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CapacityReservationTarget)ou [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)/[`ComputeResources`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-ComputeResources)/[`CapacityReservationTarget`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-CapacityReservationTarget)comme indiqué dans l'exemple de configuration de cluster suivant. Remplacez les valeurs {{values}} 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}}
```

### OBSOLÈTE/DÉCONSEILLÉ - ODCR ciblé avec remplacements d'instances Amazon EC2
<a name="odcr-parallelcuster-override-v3"></a>

**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 `targeted` ODCRs est ajouté dans la AWS ParallelCluster 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'`targeted`ODCR. Toutefois, lorsque vous utilisez `targeted` ODCR, vous devez spécifier la configuration de `run-instances` remplacement. ODCRs Le *ciblage* doit être défini explicitement dans la AWS CLI commande Amazon EC2. [https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) Pour déterminer si un ODCR est `open` un ODCR, `targeted` exécutez la commande AWS CLI Amazon [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html)EC2.

Plusieurs ODCRs peuvent être regroupés dans un groupe de ressources. Cela peut être utilisé dans le cadre du remplacement des instances d'exécution pour en cibler plusieurs en même ODCRs 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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cr-cpg.html). 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
<a name="odcr-reserved-instances"></a>

[Les instances réservées sont différentes des](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html#capacity-reservations-differences) réservations de capacité (ODCR). Il existe [deux types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/reserved-instances-scope.html) 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-instances`API 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.

### OBSOLÈTE/DÉCONSEILLÉ - Utilisation de la `RunInstances` personnalisation en AWS ParallelCluster 3 pour les réservations de capacité `targeted` à la demande (ODCR)
<a name="odcr-run-instances"></a>

**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 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 [run\_instances](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.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>
```

### OBSOLÈTE/DÉCONSEILLÉ - Créez un cluster avec des réservations de capacité `targeted` à la demande (ODCR)
<a name="odcr-create-cluster"></a>

**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[Allocation de plusieurs types d'instances avec Slurm](slurm-multiple-instance-allocation-v3.md).

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_ID}}`Remplacez-le par votre identifiant de compte, `{{PLACEHOLDER_CAPACITY_RESERVATION}}` par votre numéro de réservation de capacité et `{{REGION_ID}}` par 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_ID}}`Remplacez-le par votre identifiant de compte et `{{REGION_ID}}` par 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
   ```

1. **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
   ```

1. **Créez le script de post-installation suivant localement sur l'instance et nommez-le`postinstall.sh`.**

   `{{ACCOUNT_ID}}`Remplacez-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
   ```

   Chargement du fichier image sur un compartiment Amazon S3. {{amzn-s3-demo-bucket}}Remplacez-le par le nom de votre compartiment S3 spécifique.

   ```
   $ aws s3 mb s3://{{amzn-s3-demo-bucket}}
   aws s3 cp postinstall.sh s3://{{amzn-s3-demo-bucket}}/postinstall.sh
   ```

1. **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: {{amzn-s3-demo-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://{{amzn-s3-demo-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}}
   ```

1. **Créez le cluster.**

   Utilisez la commande suivante pour créer le cluster. `{{cluster-config.yaml}}`Remplacez-le par le nom de votre fichier de configuration, `{{cluster-dl}}` par 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`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-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` ou`DRAIN`.

```
$ 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}}
```