使用 ODCR (隨需容量保留) 啟動執行個體 - AWS ParallelCluster

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 ODCR (隨需容量保留) 啟動執行個體

使用隨需容量保留 (ODCR),您可以在特定的可用區域中為 Amazon EC2 執行個體預訂容量。如此一來,您可以建立和管理容量保留,不受 S avings Plan s 或區域預留或區域預留的帳單帳戶影響。

您可以設定opentargeted隨選容量保留 (OCDR)。開啟的 OCDR 涵蓋符合 ODCR 屬性的所有實例。這些屬性包括執行個體類型、平台和可用區域。您必須在叢集配置中明確定義目標 OCRs。若要判斷 ODCR 是否為opentargeted,請執行 AWS CLI EC2 命describe-capacity-reservation令。

您也可以在稱為叢集置放群組隨選容量保留 (CPG ODCR) 的叢集置放群組中建立 OD CR。

可以在資源群組中分組多個 ODC。這可以在群集配置文件中定義。如需資源群組的詳細資訊,請參閱什麼是 Resource Groups? 在《Res ource Groups 與標籤使用指南》中。

使用 OCDR 搭配使用 AWS ParallelCluster

AWS ParallelCluster支援開放式 OCDR。使用開放的 ODCR 時,您不需要在AWS ParallelCluster中指定任何項目。系統會自動為叢集選取執行個體。可以指定現有的置放群組或為您AWS ParallelCluster建立新的置放群組。

叢集配置中的 ODCR

從AWS ParallelCluster版本 3.3.0 開始,您可以在叢集設定檔中定義 OCDR,而不需要指定 EC2 執行個體覆寫。

首先,您可以使用連結文件集中描述的方法來建立容量保留資源群組。您必須使用這AWS CLI些方法來建立容量保留群組。如果使用AWS Management Console,則只能建立以標籤為基礎或堆疊式資源群組。AWS ParallelCluster或在啟動具有容量保留的執行個體AWS CLI時,不支援標記型和堆疊型資源群組。

建立容量保留區和資源群組之後,請在 SlurmQueues/CapacityReservationTargetSlurmQueuesComputeResources/CapacityReservationTarget中指定它們,如以下範例叢集配置所示。以有效取代紅色亮度高的值。

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
警告
  • 從AWS ParallelCluster版本 3.3.0 開始,我們不建議使用此方法。本節仍作為使用先前版本之實作的參考。

  • 此方法與 Slurm 的多個實例類型分配不兼容。

在 3.1.1 中AWS ParallelCluster新增了對 targeted ODC 的 Support。在此版本中,引入了一種機制,該機制會覆寫 EC2 RunInstances 參數,並傳遞保留相關資訊,以用於中的每個已設定運算資源AWS ParallelCluster。此機制與 targeted OCDR 相容。但是,當您使用 targeted OCDR 時,您必須指定run-instances覆寫組態。必須在 AWS CLI EC2 run-instances命令中明確定義目標 ODC。判斷是否為 ODCR opentargeted執行 AWS CLI EC2 命令describe-capacity-reservation

可以在資源群組中分組多個 ODC。這可用於執行執行個體覆寫,以同時鎖定多個 ODC。

如果您使用的是 targeted ODCR,您可以指定放置群組。但是,您也需要指定run-instances覆寫組態。

假設為您AWS建立了 targeted ODCR,或者您擁有一組特定的預留執行個體。然後,您就無法指定刊登位置群組。由所配置的規則AWS可能會與置放群組設定衝突。因此,如果您的申請需要安置組,請使用 CPG OD CR。在任一種情況下,您還必須指定run-instances覆寫組態。

如果您使用的是 CPG ODCR,則必須指定run-instances覆寫配置,並且必須在叢集配置中指定相同的置放群組。

將預留執行個體搭配 AWS ParallelCluster

預留執行個體與容量保留 (ODCR) 不同。預留執行個體有 2 種類型。地預留執行個體不保留容量。指定可用區域中的區域預留容量。

如果您有區域預留執行個體,則沒有容量保留,而且可能會出現容量不足錯誤。如果您有區域預留執行個體,則可以保留容量,但沒有可用來指定它們的 run-instances API 參數。

任何AWS ParallelCluster版本都支援預留執行個體。您不必在中指定任何內容,AWS ParallelCluster而且會自動選取實體。

使用區域預留執行個體時,您可以省略叢集配置中的放置群組規格,以避免潛在的容量不足錯誤。

警告
  • 從AWS ParallelCluster版本 3.3.0 開始,我們不建議使用此方法。本節仍作為使用先前版本之實作的參考。

  • 此方法與 Slurm 的多個實例類型分配不兼容。

您可以為叢集佇列中設定的每個運算資源覆寫 EC2 RunInstances 參數。若要這麼做,請使用下列程式碼片段內容,在叢集的 head 節點上建立/opt/slurm/etc/pcluster/run_instances_overrides.json檔案:

  • ${queue_name}是要套用覆寫項目的佇列名稱。

  • ${compute_resource_name}是您要套用覆寫的運算資源。

  • ${overrides}是任意 JSON 物件,其中包含要用於佇列和執行個體類型之特定組合的RunInstances覆寫清單。覆寫語法需要遵循與 run_instance boto3 呼叫中所記錄的相同規格。

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

例如,下列 JSON 會設定group_arn要用於和中設定的p4d.24xlarge執行個體的 ODCR 群組。my-queue my-compute-resource

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

產生此 JSON 檔案之後,負責叢集擴展的AWS ParallelCluster精靈會自動使用執行個體啟動時的覆寫設定。若要確認指定的參數正在用於執行處理啟動設定,請查看下列記錄檔:

  • /var/log/parallelcluster/clustermgtd(靜態容量)

  • /var/log/parallelcluster/slurm_resume.log(適用於動態容量)

如果參數正確,您會發現包含下列項目的記錄項目:

Found RunInstances parameters override. Launching instances with: <parameters_list>
警告
  1. 建立資源群組,以群組產能。

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

    資源群組不支援由其他帳號共用的資源。

    如果目標 ODCR 由另一個帳戶共用,則不需要建立資源群組。在步驟 3 中使用CapacityReservationId而非資源群組。

    #!/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

    將產能保留新增至資源群組。每次建立新的 ODCR 時,請將其新增至群組保留區。以您ACCOUNT_ID的帳戶 ID、PLACEHOLDER_CAPACITY_RESERVATION容量保留識別碼以及您REGION_ID的AWS 區域識別碼 (例如 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

    在本機電腦上建立政策文件。ACCOUNT_ID用您的帳戶 ID 和您REGION_ID的 AWS 區域 ID 替換(例如 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. AWS 帳戶使用您建立的 json 檔案建立 IAM 政策。

    $ aws iam create-policy --policy-name RunInstancesCapacityReservation --policy-document file://policy.json
  3. 在執行個體本機上建立下列安裝後指令碼,並將其命名postinstall.sh

    ACCOUNT_ID用您的AWS 帳戶身份證和您REGION_ID的AWS 區域身份證替換(例如 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

    將檔案上傳至 Amazon S3 儲存貯體。將 S3_NAME 儲存貯體取代為您的特定 S3 儲存貯體名稱。

    $ aws s3 mb s3://S3_NAME_BUCKET aws s3 cp postinstall.sh s3://S3_NAME_BUCKET/postinstall.sh
  4. 建立本機叢集配置,並以您自己的值取代預留位置。

    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. 建立叢集。

    使用以下命令建立叢集。cluster-config.yaml用您的配置文件名稱,cluster-dl用您的集群名稱替換為 REGION_ID 與您的區域 ID(例如,us-east-1)。

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

    建立叢集之後,安裝後指令碼會在 head 節點中執行。指令碼會建立run_instances_overrides.json檔案並覆寫呼叫,RunInstances以強制佈建磁碟分割透過隨選容量保留。

    負責叢集擴展的AWS ParallelCluster精靈會針對已啟動的新執行個體自動使用此設定。若要確認指定的參數是用來佈建執行個體,您可以查看下列記錄檔:

    • /var/log/parallelcluster/clustermgtd(靜態容量-MinCount > 0)

    • /var/log/parallelcluster/slurm_resume.log(適用於動態容量)

    如果參數正確,您會發現包含以下內容的記錄項目。

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

更新RunInstances覆寫

您可以隨時更新產生的 JSON 組態,而不必停止運算叢集。套用變更之後,所有新執行個體都會以更新的組態啟動。如果您需要將更新的設定套用至執行中的節點,請強制執行個體終止來回收節點,然後等待AWS ParallelCluster取代這些節點。您可以透過從 EC2 主控台終止執行個DOWN體AWS CLI,或者在或狀態中設定 Slurm 節點來執行此操作。DRAIN

使用以下命令將Slurm節點設置為DOWNDRAIN

$ 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