Avvio di istanze con On-Demand Capacity Reservations (ODCR) - AWS ParallelCluster

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Avvio di istanze con On-Demand Capacity Reservations (ODCR)

Con On-Demand Capacity Reservations (ODCR), puoi riservare la capacità per le tue istanze Amazon EC2 in cluster in una zona di disponibilità specifica. In questo modo, puoi creare e gestire le prenotazioni di capacità indipendentemente dagli account di fatturazione offerti da Savings Plans o dalle istanze riservate regionali.

È possibile configurare il nostro open ODCRtargeted. Open ODCR copre tutte le istanze che corrispondono agli attributi ODCR. Questi attributi sono il tipo di istanza, la piattaforma e la zona di disponibilità. È necessario definire in modo esplicito l'ODCR mirato nella configurazione del cluster. Per determinare se un ODCR è open otargeted, esegui il comando AWS CLI Amazon describe-capacity-reservationEC2.

Puoi anche creare un ODCR in un gruppo di collocamento del cluster chiamato Cluster Placement Group On-Demand Capacity Reservation (CPG ODCR).

È possibile raggruppare più ODCR in un gruppo di risorse. Questo può essere definito nel file di configurazione del cluster. Per ulteriori informazioni sui gruppi di risorse, consulta Cosa sono i gruppi di risorse? nella Guida per l'utente di Resource Groups and Tags.

Utilizzo di ODCR con AWS ParallelCluster

AWS ParallelCluster supporta ODCR aperto. Quando si utilizza un ODCR aperto, non è necessario specificare nulla in. AWS ParallelCluster Le istanze vengono selezionate automaticamente per il cluster. Potete specificare un gruppo di collocamento esistente o farne AWS ParallelCluster creare uno nuovo per voi.

ODCR nella configurazione del cluster

A partire dalla AWS ParallelCluster versione 3.3.0, puoi definire gli ODCR nel file di configurazione del cluster, senza bisogno di specificare le sostituzioni delle istanze di esecuzione di Amazon EC2.

Inizia creando prenotazioni di capacità e gruppi di risorse utilizzando i metodi descritti nella documentazione collegata per ciascuno di essi. È necessario utilizzare i AWS CLI metodi per creare gruppi di prenotazione della capacità. Se si utilizza il AWS Management Console, è possibile creare solo gruppi di risorse basati su Tag o Stack. I gruppi di risorse basati su tag e stack non sono supportati da AWS ParallelCluster o al AWS CLI momento del lancio delle istanze con prenotazioni di capacità.

Dopo aver creato le prenotazioni di capacità e i gruppi di risorse, specificali in SlurmQueues/CapacityReservationTargeto SlurmQueuesComputeResources/, CapacityReservationTargetcome mostrato nell'esempio seguente di configurazione del cluster. Sostituisci i valori evidenziati in rosso con i tuoi valori validi.

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
avvertimento
  • A partire dalla AWS ParallelCluster versione 3.3.0, non consigliamo questo metodo. Questa sezione funge da riferimento per le implementazioni che utilizzano versioni precedenti.

  • Questo metodo non è compatibile con l'allocazione di tipi di istanze multiple con Slurm.

Il supporto per gli targeted ODCR è stato aggiunto nella AWS ParallelCluster versione 3.1.1. In questa versione, è stato introdotto un meccanismo che sovrascrive RunInstances i parametri EC2 e trasmette le informazioni sulla prenotazione da utilizzare per ogni risorsa di elaborazione configurata in. AWS ParallelCluster Questo meccanismo è compatibile con ODCR. targeted Tuttavia, quando si utilizza targeted ODCR, è necessario specificare la configurazione di run-instances override. Gli ODCR mirati devono essere definiti in modo esplicito nel comando Amazon EC2 AWS CLI . run-instances Per determinare se un ODCR è open o targeted esegui il comando AWS CLI Amazon describe-capacity-reservationEC2.

È possibile raggruppare più ODCR in un gruppo di risorse. Questo può essere utilizzato nell'override delle istanze di esecuzione per indirizzare più ODCR contemporaneamente.

Se utilizzi un targeted ODCR, puoi specificare un gruppo di collocamento. Tuttavia, è necessario specificare anche una configurazione run-instances sostitutiva.

Supponiamo che abbia AWS creato un targeted ODCR per te o che tu disponga di un set specifico di istanze riservate. Quindi, non potete specificare un gruppo di collocamento. Le regole configurate da AWS potrebbero entrare in conflitto con l'impostazione del gruppo di collocamento. Quindi, se per la vostra candidatura è richiesto un gruppo di collocamento, utilizzate un CPG ODCR. In entrambi i casi, è necessario specificare anche la configurazione di run-instances override.

Se utilizzate un ODCR CPG, dovete specificare la configurazione di run-instances override e dovete specificare lo stesso gruppo di posizionamento nella configurazione del cluster.

Utilizzo di istanze riservate con AWS ParallelCluster

Le istanze riservate sono diverse dalle prenotazioni di capacità (ODCR). Esistono 2 tipi di istanze riservate. Un'istanza riservata regionale non riserva capacità. Un'istanza riservata zonale riserva la capacità nella zona di disponibilità specificata.

Se disponi di istanze riservate regionali, non è prevista alcuna prenotazione di capacità e potresti ricevere errori di capacità insufficiente. Se disponi di istanze riservate zonali, hai una riserva di capacità, ma non ci sono parametri run-instances API che puoi utilizzare per specificarle.

Le istanze riservate sono supportate da qualsiasi versione. AWS ParallelCluster Non è necessario specificare nulla in AWS ParallelCluster e le istanze vengono selezionate automaticamente.

Quando si utilizzano istanze riservate zonali, è possibile evitare potenziali errori di capacità insufficiente omettendo la specifica del gruppo di posizionamento nella configurazione del cluster.

avvertimento
  • A partire dalla AWS ParallelCluster versione 3.3.0, non consigliamo questo metodo. Questa sezione funge da riferimento per le implementazioni che utilizzano versioni precedenti.

  • Questo metodo non è compatibile con l'allocazione di tipi di istanze multiple con Slurm.

Puoi sovrascrivere i parametri di Amazon RunInstances EC2 per ogni risorsa di calcolo configurata in una coda di cluster. A tale scopo, crea il /opt/slurm/etc/pcluster/run_instances_overrides.json file sul nodo principale del cluster con il seguente contenuto di frammenti di codice:

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

Ad esempio, il seguente codice JSON configura il gruppo ODCR da utilizzare per le istanze configurate in and. group_arn p4d.24xlarge my-queue my-compute-resource

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

Dopo la generazione di questo file JSON, AWS ParallelCluster i demoni responsabili della scalabilità del cluster utilizzano automaticamente la configurazione override per l'avvio delle istanze. Per confermare che i parametri specificati vengano utilizzati per il provisioning, ad esempio, guarda i seguenti file di registro:

  • /var/log/parallelcluster/clustermgtd(per capacità statica)

  • /var/log/parallelcluster/slurm_resume.log(per capacità dinamica)

Se i parametri sono corretti, troverai una voce di registro che contiene quanto segue:

Found RunInstances parameters override. Launching instances with: <parameters_list>
avvertimento
  • A partire dalla AWS ParallelCluster versione 3.3.0, non consigliamo questo metodo. Questa sezione funge da riferimento per le implementazioni che utilizzano versioni precedenti.

  • Questo metodo non è compatibile conAllocazione di più tipi di istanza con Slurm.

  1. Crea un gruppo di risorse, per raggruppare la capacità.

    $ 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"]}]}'
    Nota

    Un gruppo di risorse non supporta risorse condivise da altri account.

    Se l'ODCR di destinazione è condiviso da un altro account, non è necessario creare un gruppo di risorse. Utilizza CapacityReservationId al posto di un gruppo di risorse nel passaggio 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

    Aggiungi prenotazioni di capacità al gruppo di risorse. Ogni volta che crei un nuovo ODCR, aggiungilo alla prenotazione di gruppo. Sostituiscilo ACCOUNT_IDcon l'ID del tuo account, PLACEHOLDER_CAPACITY_RESERVATIONcon l'ID di prenotazione della capacità e REGION_IDcon il tuo Regione AWS ID (ad esempio, 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

    Crea un documento di policy sul tuo computer locale. Sostituiscilo ACCOUNT_IDcon l'ID del tuo account e REGION_IDcon il tuo Regione AWS ID (ad esempio, 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. Crea la policy IAM Account AWS utilizzando il file json che hai creato.

    $ aws iam create-policy --policy-name RunInstancesCapacityReservation --policy-document file://policy.json
  3. Crea il seguente script post-installazione localmente sull'istanza e assegnagli un postinstall.sh nome.

    Sostituisci ACCOUNT_ID con il tuo Account AWS ID e REGION_ID con il tuo Regione AWS ID (ad esempio, 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

    Carica il file in un bucket Amazon S3. Sostituisci S3_NAME_BUCKET con il nome del bucket S3 specifico.

    $ aws s3 mb s3://S3_NAME_BUCKET aws s3 cp postinstall.sh s3://S3_NAME_BUCKET/postinstall.sh
  4. Crea la configurazione del cluster locale, sostituendo i segnaposto con i tuoi valori.

    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. Crea il cluster.

    Utilizzate il seguente comando per creare il cluster. Sostituisci cluster-config.yamlcon il nome del file di configurazione, cluster-dlcon il nome del cluster e REGION_ID con il tuo ID regionale (ad esempio, us-east-1).

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

    Dopo la creazione del cluster, lo script di post-installazione viene eseguito nel nodo principale. Lo script crea il run_instances_overrides.json file e sovrascrive le chiamate per RunInstances forzare il provisioning della partizione attraverso la On-Demand Capacity Reservation.

    I AWS ParallelCluster daemon responsabili della scalabilità del cluster utilizzano automaticamente questa configurazione per le nuove istanze che vengono lanciate. Per confermare che i parametri specificati vengono utilizzati per il provisioning delle istanze, puoi consultare i seguenti file di registro:

    • /var/log/parallelcluster/clustermgtd(per capacità statica -) MinCount > 0

    • /var/log/parallelcluster/slurm_resume.log(per capacità dinamica)

    Se i parametri sono corretti, troverai una voce di registro contenente quanto segue.

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

Aggiornare le RunInstances sostituzioni

Puoi aggiornare la configurazione JSON generata in qualsiasi momento senza interrompere la flotta di elaborazione. Dopo l'applicazione delle modifiche, tutte le nuove istanze vengono avviate con la configurazione aggiornata. Se devi applicare la configurazione aggiornata ai nodi in esecuzione, ricicla i nodi forzando la chiusura dell'istanza e attendi la sostituzione AWS ParallelCluster di tali nodi. Puoi farlo terminando l'istanza dalla console Amazon EC2 AWS CLI oppure impostando Slurm i nodi in DOWN uno DRAIN stato or.

Usa il comando seguente per impostare il Slurm nodo su oDOWN. 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