View a markdown version of this page

Luncurkan instans dengan On-Demand Reservasi Kapasitas (ODCR) - AWS ParallelCluster

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Luncurkan instans dengan On-Demand Reservasi Kapasitas (ODCR)

Dengan On-Demand Reservasi Kapasitas (ODCR), Anda dapat memesan kapasitas untuk instans Amazon EC2 cluster Anda di Zona Ketersediaan tertentu. Dengan cara ini, Anda dapat membuat dan mengelola Reservasi Kapasitas secara independen dari akun penagihan yang ditawarkan Paket Tabungan atau Instans Cadangan https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/reserved-instances-scope.html regional.

Anda dapat mengkonfigurasi open atau targeted ODCR. Open ODCR mencakup semua instance yang cocok dengan atribut ODCR. Atribut ini adalah tipe instance, platform, dan Availability Zone. Anda harus secara eksplisit mendefinisikan ODCR yang ditargetkan dalam konfigurasi cluster. Untuk menentukan apakah ODCR adalah open atautargeted, jalankan perintah AWS CLI Amazon EC2 describe-capacity-reservation.

Anda juga dapat membuat ODCR dalam grup penempatan cluster yang disebut reservasi kapasitas sesuai permintaan grup penempatan cluster (CPG ODCR).

Beberapa ODCR dapat dikelompokkan dalam grup sumber daya. Ini dapat didefinisikan dalam file konfigurasi cluster. Untuk informasi selengkapnya tentang grup sumber daya, lihat Apa itu grup sumber daya? dalam Panduan Pengguna Grup Sumber Daya dan Tag.

Menggunakan ODCR dengan AWS ParallelCluster

AWS ParallelCluster mendukung ODCR terbuka. Saat menggunakan ODCR terbuka, Anda tidak perlu menentukan apa pun di AWS ParallelCluster. Instans dipilih secara otomatis untuk cluster. Anda dapat menentukan grup penempatan yang ada atau AWS ParallelCluster membuat grup baru untuk Anda.

ODCR dalam konfigurasi cluster

Dimulai dengan AWS ParallelCluster versi 3.3.0, Anda dapat menentukan ODCR dalam file konfigurasi cluster, tanpa perlu menentukan penggantian instans run Amazon EC2.

Anda mulai dengan membuat reservasi kapasitas dan grup sumber daya menggunakan metode yang dijelaskan dalam dokumentasi tertaut untuk masing-masing. Anda harus menggunakan AWS CLI metode untuk membuat grup reservasi kapasitas. Jika Anda menggunakan Konsol Manajemen AWS, Anda hanya dapat membuat grup sumber daya berbasis Tag atau berbasis Stack. Grup sumber daya berbasis tag dan berbasis Stack tidak didukung oleh AWS ParallelCluster atau AWS CLI saat meluncurkan instans dengan reservasi kapasitas.

Setelah reservasi kapasitas dan grup sumber daya dibuat, tentukan mereka di SlurmQueues/CapacityReservationTargetatau SlurmQueues/ComputeResources/CapacityReservationTargetseperti yang ditunjukkan dalam contoh konfigurasi cluster berikut. Ganti values yang disorot dengan warna merah dengan nilai valid Anda.

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
Awas
  • Dimulai dengan AWS ParallelCluster versi 3.3.0, kami tidak merekomendasikan metode ini. Bagian ini tetap sebagai referensi untuk implementasi menggunakan versi sebelumnya.

  • Metode ini tidak kompatibel dengan alokasi tipe beberapa instance dengan Slurm.

Dukungan untuk targeted ODCR ditambahkan di AWS ParallelCluster 3.1.1. Dalam rilis ini, mekanisme diperkenalkan yang mengesampingkan RunInstances parameter EC2 dan meneruskan informasi tentang reservasi yang akan digunakan untuk setiap sumber daya komputasi yang dikonfigurasi di. AWS ParallelCluster Mekanisme ini kompatibel dengan targeted ODCR. Namun, saat Anda menggunakan targeted ODCR, Anda harus menentukan konfigurasi run-instances override. ODCR yang ditargetkan harus didefinisikan secara eksplisit dalam perintah AWS CLI Amazon EC run-instances 2. Untuk menentukan apakah ODCR adalah open atau targeted menjalankan perintah AWS CLI Amazon EC2. describe-capacity-reservation

Beberapa ODCR dapat dikelompokkan dalam grup sumber daya. Ini dapat digunakan dalam penggantian instans run untuk menargetkan beberapa ODCR secara bersamaan.

Jika Anda menggunakan targeted ODCR, Anda dapat menentukan grup penempatan. Namun, Anda juga perlu menentukan konfigurasi run-instances override.

Misalkan AWS itu membuat targeted ODCR untuk Anda atau Anda memiliki kumpulan Instans Cadangan tertentu. Kemudian, Anda tidak dapat menentukan grup penempatan. Aturan yang dikonfigurasi oleh AWS mungkin bertentangan dengan pengaturan grup penempatan. Jadi, jika grup penempatan diperlukan untuk aplikasi Anda, gunakan OD CR CPG. Dalam kedua kasus tersebut, Anda juga harus menentukan konfigurasi run-instances override.

Jika Anda menggunakan ODCR CPG, Anda harus menentukan konfigurasi run-instances override dan Anda harus menentukan grup penempatan yang sama dalam konfigurasi cluster.

Menggunakan Instans Cadangan dengan AWS ParallelCluster

Instans Cad angan berbeda dari Reservasi Kapasitas (ODCR). Ada 2 jenis instance cadangan. Instans Cad angan Regional tidak mencadangkan kapasitas. Instans Cadangan zona mencadangkan kapasitas di Zona Ketersediaan yang ditentukan.

Jika Anda memiliki Instans Cadangan Regional, tidak ada reservasi kapasitas dan Anda bisa mendapatkan Kesalahan Kapasitas Tidak Mencukupi. Jika Anda memiliki Instans Cadangan zona, Anda memiliki reservasi kapasitas, tetapi tidak ada parameter run-instances API yang dapat Anda gunakan untuk menentukannya.

Instans cadangan didukung oleh AWS ParallelCluster versi apa pun. Anda tidak perlu menentukan apa pun AWS ParallelCluster dan instans dipilih secara otomatis.

Saat menggunakan Instans Cadangan zona, Anda dapat menghindari potensi Kesalahan Kapasitas Tidak Mencukupi dengan menghilangkan spesifikasi grup penempatan dalam konfigurasi cluster.

Awas
  • Dimulai dengan AWS ParallelCluster versi 3.3.0, kami tidak merekomendasikan metode ini. Bagian ini tetap sebagai referensi untuk implementasi menggunakan versi sebelumnya.

  • Metode ini tidak kompatibel dengan alokasi tipe beberapa instance dengan Slurm.

Anda dapat mengganti RunInstances parameter Amazon EC2 untuk setiap sumber daya komputasi yang dikonfigurasi dalam antrian cluster. Untuk melakukannya, buat /opt/slurm/etc/pcluster/run_instances_overrides.json file pada node kepala cluster dengan konten cuplikan kode berikut:

  • ${queue_name}adalah nama antrian yang ingin Anda terapkan penggantian.

  • ${compute_resource_name}adalah sumber daya komputasi yang ingin Anda terapkan penggantian.

  • ${overrides}adalah objek JSON arbitrer yang berisi daftar penggantian RunInstances untuk digunakan untuk kombinasi tertentu dari jenis antrian dan instance. Sintaks overrides harus mengikuti spesifikasi yang sama yang didokumentasikan dalam panggilan boto3 run_instances.

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

Misalnya, JSON berikut mengonfigurasi grup ODCR group_arn untuk digunakan untuk p4d.24xlarge instance yang dikonfigurasi di my-queue dan. my-compute-resource

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

Setelah file JSON ini dibuat, AWS ParallelCluster daemon yang bertanggung jawab untuk penskalaan cluster secara otomatis menggunakan konfigurasi override misalnya peluncuran. Untuk mengonfirmasi bahwa parameter yang ditentukan sedang digunakan untuk penyediaan contoh, lihat file log berikut:

  • /var/log/parallelcluster/clustermgtd(untuk kapasitas statis)

  • /var/log/parallelcluster/slurm_resume.log(untuk kapasitas dinamis)

Jika parameternya benar, Anda akan menemukan entri log yang berisi berikut ini:

Found RunInstances parameters override. Launching instances with: <parameters_list>
Awas
  • Dimulai dengan AWS ParallelCluster versi 3.3.0, kami tidak merekomendasikan metode ini. Bagian ini tetap sebagai referensi untuk implementasi menggunakan versi sebelumnya.

  • Metode ini tidak kompatibel denganBeberapa alokasi tipe instans dengan Slurm.

  1. Buat grup sumber daya, untuk kapasitas grup.

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

    Grup sumber daya tidak mendukung sumber daya yang dibagikan oleh akun lain.

    Jika ODCR target dibagikan oleh akun lain, Anda tidak perlu membuat grup sumber daya. Gunakan CapacityReservationId alih-alih grup sumber daya pada langkah 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

    Tambahkan reservasi kapasitas ke grup sumber daya. Setiap kali Anda membuat ODCR baru, tambahkan ke Reservasi Grup. Ganti ACCOUNT_ID dengan ID akun Anda, PLACEHOLDER_CAPACITY_RESERVATION dengan ID reservasi kapasitas Anda, dan REGION_ID dengan Wilayah AWS ID Anda (misalnya, 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

    Buat dokumen kebijakan di komputer lokal Anda. Ganti ACCOUNT_ID dengan ID akun Anda dan REGION_ID dengan Wilayah AWS ID Anda (misalnya, 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. Buat kebijakan IAM pada Akun AWS penggunaan file json yang Anda buat.

    $ aws iam create-policy --policy-name RunInstancesCapacityReservation --policy-document file://policy.json
  3. Buat skrip pasca instal berikut secara lokal pada instance dan beri namapostinstall.sh.

    Ganti ACCOUNT_ID dengan Akun AWS ID Anda, dan REGION_ID dengan Wilayah AWS ID Anda (misalnya, 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

    Unggah file ke bucket Amazon S3. Ganti amzn-s3-demo-bucket dengan nama bucket S3 spesifik Anda.

    $ aws s3 mb s3://amzn-s3-demo-bucket aws s3 cp postinstall.sh s3://amzn-s3-demo-bucket/postinstall.sh
  4. Buat konfigurasi cluster lokal, ganti placeholder dengan nilai Anda sendiri.

    Region: REGION_ID Image:   Os: alinux2023 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
  5. Buat cluster.

    Gunakan perintah berikut untuk membuat cluster. Ganti cluster-config.yaml dengan nama file konfigurasi Anda, cluster-dl dengan nama cluster Anda, dan REGION_ID dengan ID Wilayah Anda (misalnya, us-east-1).

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

    Setelah cluster dibuat, skrip pasca-instalasi berjalan di node kepala. Skrip membuat run_instances_overrides.json file dan mengganti panggilan RunInstances untuk memaksa penyediaan partisi untuk melewati Reservasi On-Demand Kapasitas.

    AWS ParallelCluster Daemon yang bertanggung jawab untuk penskalaan cluster secara otomatis menggunakan konfigurasi ini untuk instans baru yang diluncurkan. Untuk mengonfirmasi bahwa parameter yang ditentukan digunakan untuk menyediakan instance, Anda dapat melihat file log berikut:

    • /var/log/parallelcluster/clustermgtd(untuk kapasitas statis - MinCount > 0)

    • /var/log/parallelcluster/slurm_resume.log(untuk kapasitas dinamis)

    Jika parameternya benar, Anda akan menemukan entri log berisi yang berikut ini.

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

Memperbarui peng RunInstances gantian

Anda dapat memperbarui konfigurasi JSON yang dihasilkan kapan saja tanpa menghentikan armada komputasi. Setelah perubahan diterapkan, semua instance baru diluncurkan dengan konfigurasi yang diperbarui. Jika Anda perlu menerapkan konfigurasi yang diperbarui ke node yang sedang berjalan, daur ulang node dengan memaksa penghentian instance dan tunggu AWS ParallelCluster untuk mengganti node tersebut. Anda dapat melakukan ini dengan mengakhiri instance dari konsol Amazon EC2 atau AWS CLI, atau dengan mengatur Slurm node dalam status DOWN atauDRAIN.

Gunakan perintah berikut untuk mengatur Slurm node ke DOWN atauDRAIN.

$ 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