本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 ODCR (隨需容量保留) 啟動執行個體
使用隨需容量保留 (ODCR),您可以在特定的可用區域中為 Amazon EC2 執行個體預訂容量。如此一來,您可以建立和管理容量保留,不受 S avings Plan
您可以設定open
或targeted
隨選容量保留 (OCDR)。開啟的 OCDR 涵蓋符合 ODCR 屬性的所有實例。這些屬性包括執行個體類型、平台和可用區域。您必須在叢集配置中明確定義目標 OCRs。若要判斷 ODCR 是否為open
或targeted
,請執行 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/CapacityReservationTarget或 SlurmQueuesComputeResources/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 open
或targeted
執行 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_instanceboto3 呼叫中所記錄的相同規格。
{ "${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>
警告
-
從AWS ParallelCluster版本 3.3.0 開始,我們不建議使用此方法。本節仍作為使用先前版本之實作的參考。
-
此方法與使用 Slurm 進行多個實例類型分配.
-
建立資源群組,以群組產能。
$
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 時,請將其新增至群組保留區。以您
的帳戶 ID、ACCOUNT_ID
容量保留識別碼以及您PLACEHOLDER_CAPACITY_RESERVATION
的AWS 區域識別碼 (例如 us-east-1) 取代。REGION_ID
$
aws resource-groups group-resources --region
REGION_ID
--groupEC2CRGroup
\ --resource-arns arn:aws:ec2:REGION_ID
:ACCOUNT_ID
:capacity-reservation/PLACEHOLDER_CAPACITY_RESERVATION
在本機電腦上建立政策文件。
用您的帳戶 ID 和您ACCOUNT_ID
的 AWS 區域 ID 替換(例如 US-east-1)。REGION_ID
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 -
AWS 帳戶使用您建立的 json 檔案建立 IAM 政策。
$
aws iam create-policy --policy-name
RunInstancesCapacityReservation
--policy-document file://policy.json -
在執行個體本機上建立下列安裝後指令碼,並將其命名
postinstall.sh
。
用您的AWS 帳戶身份證和您ACCOUNT_ID
的AWS 區域身份證替換(例如 US-east-1)。REGION_ID
#!/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 -
建立本機叢集配置,並以您自己的值取代預留位置。
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
-
建立叢集。
使用以下命令建立叢集。
用您的配置文件名稱,cluster-config.yaml
用您的集群名稱替換為cluster-dl
REGION_ID
與您的區域 ID(例如,us-east-1)。$
pcluster create-cluster --cluster-configuration
cluster-config.yaml
--cluster-namecluster-dl
--regionREGION_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節點設置為DOWN
或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