翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
オンデマンドキャパシティ予約 (ODCR) を使用してインスタンスを起動する
オンデマンドキャパシティ予約 (ODCR) を使用すると、特定のアベイラビリティーゾーン内のクラスター Amazon EC2インスタンスのキャパシティを予約できます。これにより、Savings Plans
open
または targeted
を設定できますODCR。Open は、ODCR属性に一致するインスタンスをすべてODCRカバーします。これらの属性はインスタンスタイプ、プラットフォーム、およびアベイラビリティーゾーンです。クラスター設定ODCRで Targeted を明示的に定義する必要があります。ODCR が open
か かを確認するにはtargeted
、Amazon EC2 describe-capacity-reservation
コマンドを実行します AWS CLI 。
またODCR、クラスタープレイスメントグループオンデマンドキャパシティ予約 (CPG ODCR) と呼ばれるクラスタープレイスメントグループに を作成することもできます。
リソースグループには複数の をグループ化ODCRsできます。これはクラスター設定ファイルで定義できます。リソースグループの詳細については、「Resource Groups とタグのユーザーガイド」の「What are resource groups?」を参照してください。
ODCR で を使用する AWS ParallelCluster
AWS ParallelCluster はオープン をサポートしますODCR。開いている を使用する場合ODCR、 で何も指定する必要はありません AWS ParallelCluster。インスタンスはクラスター用に自動的に選択されます。既存のプレイスメントグループを指定するか、新しいプレイスメントグループ AWS ParallelCluster を作成することができます。
ODCR クラスター設定で
AWS ParallelCluster バージョン 3.3.0 以降では、クラスター設定ファイルODCRsで を定義できます。Amazon EC2ランインスタンスのオーバーライドを指定する必要はありません。
まず、それぞれのリンク先のドキュメントで説明されている方法を使用して、キャパシティ予約とリソースグループを作成します。キャパシティ予約グループを作成するには、 AWS CLI メソッドを使用する必要があります。を使用する場合は AWS Management Console、タグベースまたはスタックベースのリソースグループのみを作成できます。タグベースおよびスタックベースのリソースグループは、キャパシティ予約でインスタンスを起動 AWS CLI する場合、 AWS ParallelCluster または ではサポートされていません。
キャパシティ予約とリソースグループを作成したら、以下のクラスター設定例に示すように、SlurmQueues/CapacityReservationTarget または SlurmQueues/ComputeResources/CapacityReservationTarget で指定します。置換 values
有効な値で赤で強調表示されます。
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 による複数インスタンスタイプ割り当てとは互換性がありません。
のサポートtargeted
ODCRsが AWS ParallelCluster 3.1.1 に追加されました。このリリースでは、EC2RunInstances
パラメータを上書きし、 で設定された各コンピューティングリソースに使用する予約に関する情報を渡すメカニズムが導入されました AWS ParallelCluster。このメカニズムは targeted
と互換性がありますODCR。ただし、 を使用する場合はtargeted
ODCR、run-instances
オーバーライド設定を指定する必要があります。ターゲットは AWS CLI Amazon EC2 run-instances
コマンドで明示的に定義ODCRsする必要があります。ODCR が AWS CLI Amazon EC2 コマンド open
であるか、targeted
実行されているかどうかを判断するにはdescribe-capacity-reservation
。
リソースグループには複数の をグループ化ODCRsできます。これは、ランインスタンスオーバーライドで複数の ODCRs を同時にターゲットにするために使用できます。
を使用している場合はtargeted
ODCR、プレイスメントグループを指定できます。ただし、run-instances
オーバーライド設定も指定する必要があります。
が targeted
ODCRを AWS 作成した、または特定のリザーブドインスタンスのセットがあるとします。そうなると、プレイスメントグループを指定できなくなります。によって設定されたルールは AWS 、プレイスメントグループ設定と競合する可能性があります。したがって、アプリケーションにプレイスメントグループが必要な場合は、 CPG ODCRを使用します。いずれの場合も、run-instances
オーバーライド設定を指定する必要があります。
を使用している場合はCPGODCR、run-instances
オーバーライド設定を指定し、クラスター設定で同じプレイスメントグループを指定する必要があります。
でのリザーブドインスタンスの使用 AWS ParallelCluster
予約されたインスタンスは、キャパシティ予約 () とは異なりますODCR。リザーブドインスタンスには 2 つのタイプがあります。リージョンのリザーブドインスタンスでは、キャパシティは予約されません。ゾーンのリザーブドインスタンスでは、指定されたアベイラビリティーゾーンでキャパシティが予約されます。
リージョンのリザーブドインスタンスがある場合、キャパシティが予約されず、容量不足エラーが発生する可能性があります。ゾーンリザーブドインスタンスがある場合は、キャパシティ予約がありますが、指定に使用できるrun-instances
APIパラメータはありません。
リザーブドインスタンスは、どの AWS ParallelCluster バージョンでもサポートされています。で何も指定する必要はありません。 AWS ParallelCluster インスタンスは自動的に選択されます。
ゾーンのリザーブドインスタンスを使用するときは、クラスター設定でプレイスメントグループの指定を省略することで、発生する可能性のある容量不足エラーを回避できます。
警告
-
AWS ParallelCluster バージョン 3.3.0 以降では、このメソッドはお勧めしません。このセクションは、以前のバージョンを使用した実装のリファレンスとして残しています。
-
このメソッドは Slurm による複数インスタンスタイプ割り当てとは互換性がありません。
クラスターキューに設定されている各コンピューティングリソースの Amazon EC2RunInstances
パラメータを上書きできます。そのためには、以下のコードスニペットコンテンツを含む /opt/slurm/etc/pcluster/run_instances_overrides.json
ファイルをクラスターのヘッドノードに作成します。
-
${queue_name}
はオーバーライドを適用するキューの名前です。 -
${compute_resource_name}
オーバーライドを適用するコンピューティングリソースです。 -
${overrides}
は、キューとインスタンスタイプの特定の組み合わせに使用するRunInstances
オーバーライドのリストを含む任意のJSONオブジェクトです。オーバーライドの構文は、run_instancesboto3 呼び出しで説明されているのと同じ仕様に従う必要があります。
{ "${queue_name}": { "${compute_resource_name}": { ${overrides} }, ... }, ... }
例えば、以下では、 my-queue
および で設定されたp4d.24xlarge
インスタンスgroup_arn
に使用するODCRグループJSONを設定します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
キャパシティ予約 ID、およびPLACEHOLDER_CAPACITY_RESERVATION
AWS リージョン ID (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 -
作成した JSON ファイル AWS アカウント を使用して、 にIAMポリシーを作成します。
$
aws iam create-policy --policy-name
RunInstancesCapacityReservation
--policy-document file://policy.json -
次のポストインストールスクリプトをインスタンス上でローカルに作成し、
postinstall.sh
という名前を付けます。を AWS アカウント ID
に、 を AWS リージョン ID (us-east-1 など)ACCOUNT_ID
に置き換えます。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
" } } } } } EOFAmazon S3 バケットにファイルをアップロードします。置換
amzn-s3-demo-bucket
特定の S3 バケット名。$
aws s3 mb s3://
amzn-s3-demo-bucket
aws s3 cp postinstall.sh s3://amzn-s3-demo-bucket
/postinstall.sh -
プレースホルダーを独自の値に置き換えて、ローカルクラスター設定を作成します。
Region:
REGION_ID
Image: Os: alinux2 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
-
クラスターを作成します。
次のコマンドを使用してクラスターを作成します。置換
設定ファイル名を使用して、cluster-config.yaml
クラスター名、およびcluster-dl
REGION_ID
リージョン ID (us-east-1 など) を使用します。$
pcluster create-cluster --cluster-configuration
cluster-config.yaml
--cluster-namecluster-dl
--regionREGION_ID
クラスターが作成されると、ポストインストールスクリプトはヘッドノードで実行されます。このスクリプトは
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、Slurm DOWN
または 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