本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用隨需容量保留 (ODCR) 啟動執行個體
使用隨需容量保留 (ODCR),您可以為特定可用區域中的叢集 Amazon EC2 執行個體預留容量。如此一來,您就可以獨立於 S avings Plan
您可以配置open
或 targeted
ODCR。「開啟 ODCR」會涵蓋符合 ODCR 屬性的所有實例。這些屬性包括執行個體類型、平台和可用區域。您必須在叢集配置中明確定義目標 ODCR。若要判斷是open
否為 ODCRtargeted
,請執行 AWS CLI
Amazon EC2 describe-capacity-reservation
命令。
您也可以在稱為叢集置放群組隨選容量保留 (CPG ODCR) 的叢集置放群組中建立 OD CR。
可以在資源群組中分組多個 ODC。這可以在群集配置文件中定義。如需有關資源群組的詳細資訊,請參閱什麼是資源群組? 在《Res ource Groups 與標籤使用指南》中。
使用 OCR 搭配使用 AWS ParallelCluster
AWS ParallelCluster 支持開放的 ODCR。使用開啟的 ODCR 時,您不需要在中指定任何內 AWS ParallelCluster容。系統會自動為叢集選取執行個體。您可以指定現有的放置群組,也可以為您 AWS ParallelCluster 建立新的放置群組。
叢集配置中的 ODCR
從 AWS ParallelCluster 版本 3.3.0 開始,您可以在叢集組態檔中定義 ODC,而不需要指定 Amazon 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
ODCR 兼容。但是,當您使用 targeted
ODCR 時,您必須指定run-instances
覆寫組態。目標 OCR 必須在 AWS CLI Amazon EC2 run-instances
命令中明確定義。判斷是否有 ODCR open
或targeted
執行 AWS CLI Amazon 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 的多個實例類型分配不兼容。
您可以為叢集佇列中設定的每個運算資源覆寫 Amazon 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 取代這些節點。您可以透過從 Amazon EC2 主控台終止執行個體 AWS CLI,或者在DOWN
或DRAIN
狀態中設定Slurm節點來執行此操作。
使用以下命令將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