翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
オンデマンドキャパシティ予約 (ODCR) を使用してインスタンスを起動する
オンデマンドキャパシティ予約 (ODCR) を使用すると、特定のアベイラビリティーゾーンでクラスターの Amazon EC2 インスタンスのキャパシティを予約できます。これにより、Savings Plans
open または targeted の ODCR を設定できます。オープン ODCR は、ODCR 属性に一致するすべてのインスタンスを対象としています。これらの属性はインスタンスタイプ、プラットフォーム、およびアベイラビリティーゾーンです。ターゲット ODCR はクラスター設定で明示的に定義する必要があります。ODCR が open または targeted であるかどうかを確認するには、 AWS CLI
の Amazon EC2 describe-capacity-reservation コマンドを実行します。
クラスタープレイスメントグループオンデマンドキャパシティ予約 (CPG ODCR) と呼ばれるクラスタープレイスメントグループに ODCR を作成することもできます。
複数の ODCR を 1 つのリソースグループにまとめることができます。これはクラスター設定ファイルで定義できます。リソースグループの詳細については、「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 マネジメントコンソール、タグベースまたはスタックベースのリソースグループのみを作成できます。キャパシティ予約でインスタンスを起動 AWS CLI する場合、タグベースおよびスタックベースのリソースグループは AWS ParallelCluster または ではサポートされていません。
キャパシティ予約とリソースグループを作成したら、以下のクラスター設定例に示すように、SlurmQueues/CapacityReservationTarget または SlurmQueues/ComputeResources/CapacityReservationTarget で指定します。赤で強調表示された値を有効な値に置き換えます。
Image: Os:osHeadNode: InstanceType:head_node_instanceNetworking: SubnetId:public_subnet_idSsh: KeyName:key_nameScheduling: Scheduler:schedulerSlurmQueues: - Name: queue1 Networking: SubnetIds: -private_subnet_idComputeResources: - Name: cr1 Instances: - InstanceType:instanceMaxCount:max_queue_sizeMinCount:max_queue_sizeEfa: Enabled: true CapacityReservationTarget: CapacityReservationResourceGroupArn:capacity_reservation_arn
警告
-
AWS ParallelCluster バージョン 3.3.0 以降では、この方法はお勧めしません。このセクションは、以前のバージョンを使用した実装のリファレンスとして残しています。
-
このメソッドは Slurm による複数インスタンスタイプ割り当てとは互換性がありません。
ODCRs のサポートが targeted AWS ParallelCluster 3.1.1 に追加されました。このリリースでは、EC2 の RunInstances パラメータをオーバーライドして、設定されている AWS ParallelClusterの各コンピューティングリソースに使用する予約に関する情報を渡すメカニズムが導入されました。このメカニズムは targeted ODCR と互換性があります。ただし、targeted ODCR を使用する場合は、run-instances オーバーライド設定を指定する必要があります。ターゲット ODCR は AWS CLI の Amazon EC2 run-instances コマンドで明示的に定義する必要があります。ODCR が であるかどうかを判断するopenか、 AWS CLI Amazon EC2 コマンド targetedを実行しますdescribe-capacity-reservation。
複数の ODCR を 1 つのリソースグループにまとめることができます。これを実行インスタンスオーバーライドで使用すると、同時に複数の ODCR をターゲットにすることができます。
targeted ODCR を使用している場合は、プレイスメントグループを指定できます。ただし、run-instances オーバーライド設定も指定する必要があります。
が ODCR targeted を AWS 作成したか、特定のリザーブドインスタンスのセットがあるとします。そうなると、プレイスメントグループを指定できなくなります。によって設定されたルールは、プレイスメントグループ設定と競合 AWS する可能性があります。そのため、アプリケーションにプレイスメントグループが必要な場合は、CPG ODCR を使用してください。いずれの場合も、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 パラメータをオーバーライドできます。そのためには、以下のコードスニペットコンテンツを含む /opt/slurm/etc/pcluster/run_instances_overrides.json ファイルをクラスターのヘッドノードに作成します。
-
${queue_name}はオーバーライドを適用するキューの名前です。 -
${compute_resource_name}オーバーライドを適用するコンピューティングリソースです。 -
${overrides}は、キューとインスタンスタイプの特定の組み合わせに使用するRunInstancesオーバーライドのリストを含む任意の JSON オブジェクトです。オーバーライドの構文は、run_instancesboto3 呼び出しで説明されているのと同じ仕様に従う必要があります。
{ "${queue_name}": { "${compute_resource_name}": { ${overrides} }, ... }, ... }
例えば、次の JSON は、my-queue と my-compute-resource で設定された p4d.24xlarge インスタンスに ODCR グループ group_arn を使用するように設定します。
{"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 --nameEC2CRGroup\ --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、 を AWS リージョン ID (us-east-1 など)PLACEHOLDER_CAPACITY_RESERVATIONに置き換えます。REGION_ID$aws resource-groups group-resources --regionREGION_ID--groupEC2CRGroup\ --resource-arns arn:aws:ec2:REGION_ID:ACCOUNT_ID:capacity-reservation/PLACEHOLDER_CAPACITY_RESERVATIONローカルコンピュータでポリシードキュメントを作成します。をアカウント ID
に、 を AWS リージョン ID (us-east-1 など)ACCOUNT_IDに置き換えます。REGION_IDcat > 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-nameRunInstancesCapacityReservation--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-bucketaws s3 cp postinstall.sh s3://amzn-s3-demo-bucket/postinstall.sh -
プレースホルダーを独自の値に置き換えて、ローカルクラスター設定を作成します。
Region:REGION_IDImage: Os: alinux2 HeadNode: InstanceType: c5.2xlarge Ssh: KeyName:YOUR_SSH_KEYIam: S3Access: - BucketName:amzn-s3-demo-bucketAdditionalIamPolicies: - 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_AZScheduling: Scheduler: slurm SlurmQueues: - Name: my-queue ComputeResources: - MinCount: 0 MaxCount: 100 InstanceType: p4d.24xlarge Name:my-compute-resourceEfa: Enabled: true Networking: ## PlacementGroup: ## Enabled: true ## Keep PG disabled if using targeted ODCR SubnetIds: -YOUR_PRIVATE_SUBNET_IN_TARGET_AZ -
クラスターを作成します。
次のコマンドを使用してクラスターを作成します。
を構成ファイル名に、cluster-config.yamlをクラスター名に、cluster-dlREGION_IDをリージョン ID (us-east-1 など) に置き換えます。$pcluster create-cluster --cluster-configurationcluster-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-1state=down reason=your_reasonscontrol update nodename=my-queue-dy-my-compute-resource-1state=drain reason=your_reason