このチュートリアルでは、H4D HPC 最適化マシンタイプを使用するマネージド インスタンス グループ(MIG)を作成する方法について説明します。MIG は、予約にバインドされたプロビジョニング モデルを使用してコンピューティング リソースを取得します。
MIG を作成すると、複数の仮想マシン(VM)を単一のエンティティとして管理できます。MIG 内の各 VM はインスタンス テンプレートに基づいています。グループ内の VM を自動的に管理することで、MIG は高い可用性とスケーラビリティを実現します。MIG の詳細については、マネージド インスタンス グループをご覧ください。
HPC VM と HPC クラスタの作成オプションについては、HPC クラスタの作成の概要をご覧ください。
このチュートリアルは、ワークロードを実行するために相互接続された HPC インスタンスのグループを作成することに関心がある HPC エンジニア、プラットフォーム管理者、オペレーター、データと MPI のスペシャリストを対象としています。結果のインスタンスは、インスタンス管理やジョブ スケジューリングにオーケストレーターを使用しません。
マネージド インスタンス グループを作成するが、インスタンスの高密度デプロイを作成する必要がない場合は、マネージド インスタンス グループ(MIG)を作成するための基本的なシナリオをご覧ください。
目標
- VM インスタンスの容量ブロックを予約します。
- 省略可: Virtual Private Cloud(VPC)ネットワークを作成します。
- 省略可: ワークロード ポリシーを作成します。
- インスタンス テンプレートを作成します。
- 次のいずれかの方法で MIG を作成します。
- ターゲット サイズで MIG を作成します。
- MIG とサイズ変更リクエストを作成します。
- 作成したリソースをクリーンアップします。
費用
このドキュメントでは、課金対象である次の Google Cloudコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
このドキュメントに記載されているタスクの完了後、作成したリソースを削除すると、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable compute.googleapis.com
-
Install the Google Cloud CLI.
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init
-
Create or select a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the required API:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable compute.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1,roles/compute.networkAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Replace the following:
PROJECT_ID
: your project ID.USER_IDENTIFIER
: the identifier for your user account—for example,myemail@example.com
.ROLE
: the IAM role that you grant to your user account.
AI Hypercomputer のドキュメントで、アカウント チームに連絡して容量を予約する手順に沿って操作します。将来の予約リクエストでは、次の例外を除き、ドキュメントに記載されているとおりに情報を指定します。
- マシンタイプ: H4D マシンタイプ(
h4d-standard-192
、h4d-highmem-192
、h4d-highmem-192-lssd
)を指定します。 - ゾーン: 使用可能なリージョンとゾーンの表に記載されているように、H4D インスタンスを使用できるゾーンのいずれかを指定します。H4D で使用可能なゾーンのみを表示するには、[マシンシリーズを選択] リストで
H4D
を選択します。 - メンテナンス スケジューリング タイプ: H4D インスタンスの場合は、
GROUPED
またはINDEPENDENT
のいずれかを指定できます。 - 予約の運用モード: H4D インスタンスの場合は、値
HIGHLY_AVAILABLE_CAPACITY
を指定します。
- マシンタイプ: H4D マシンタイプ(
容量が提供される前に割り当てが自動的に増加します。お客様側でのご対応は必要ありません。
インスタンス テンプレートを作成するときに、予約バインド プロビジョニング モデルを指定します。MIG の VM インスタンスは、予約済み容量からプロビジョニングされます。
- Google Cloud コンソール、gcloud CLI、または Compute Engine API を使用して、使用可能な容量を検索し、リソースを予約します。
- 割り当ては課金されず、お客様側での対応は必要ありません。
- インスタンス テンプレートを作成するときに、予約バインド プロビジョニング モデルを指定します。MIG の VM インスタンスは、予約済み容量からプロビジョニングされます。
- Cloud RDMA を使用するように H4D インスタンスを構成する場合は、このセクションの手順を完了します。
- Cloud RDMA を使用しない場合は、このセクションをスキップして、代わりにデフォルト ネットワークを使用できます。
- NIC タイプ
GVNIC
: 通常の VM-VM 間通信と VM-インターネット間通信で TCP/IP とインターネット トラフィックにgve
ドライバを使用します。 - NIC タイプ
IRDMA
: インスタンス間の Cloud RDMA ネットワーキングに IDPF/iRDMA ドライバを使用します。 GVNIC
ネットワーク インターフェースのホスト ネットワークを作成するには、VPC ネットワークの作成と管理をご覧ください。GVNIC
ネットワーク インターフェースを 1 つだけ構成する場合は、デフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用できます。IRDMA
ネットワーク インターフェースのネットワークを作成するには、RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成するをご覧ください。RDMA ネットワークの最大伝送単位(MTU)のデフォルト値(8896
)を使用します。- 省略可: スクリプトを実行する前に、RDMA ネットワーク プロファイルを一覧表示して、使用可能なプロファイルがあることを確認します。
gcloud beta compute network-profiles list
次のコードをコピーして、Linux シェル ウィンドウで実行します。
#!/bin/bash # Set the number of GVNIC interfaces to create. You can create up to 9. NUM_GVNIC=NUMBER_OF_GVNIC # Create standard VPC (networks and subnets) for the GVNIC interfaces for N in $(seq 0 $(($NUM_GVNIC - 1))); do gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \ --subnet-mode=custom gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \ --network=GVNIC_NAME_PREFIX-net-$N \ --region=REGION \ --range=10.$N.0.0/16 gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \ --network=GVNIC_NAME_PREFIX-net-$N \ --action=ALLOW \ --rules=tcp:0-65535,udp:0-65535,icmp \ --source-ranges=10.0.0.0/8 done # Create SSH firewall rules gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \ --network=GVNIC_NAME_PREFIX-net-0 \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=IP_RANGE # Optional: Create a firewall rule for the external IP address for the # first GVNIC network interface gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \ --network=GVNIC_NAME_PREFIX-net-0 \ --action=ALLOW \ --rules=icmp \ --source-ranges=IP_RANGE # Create a network for the RDMA over Falcon network interface gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \ --network-profile=ZONE-vpc-falcon \ --subnet-mode custom # Create a subnet for the RDMA network gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \ --network=RDMA_NAME_PREFIX-irdma \ --region=REGION \ --range=10.2.0.0/16 # offset to avoid overlap with GVNIC subnet ranges
次のように置き換えます。
NUMBER_OF_GVNIC
: 作成する GVNIC インターフェースの数。1 ~ 9 の数値を指定します。GVNIC_NAME_PREFIX
: GVNIC NIC タイプを使用する標準 VPC ネットワークとサブネットに使用する名前の接頭辞。REGION
: ネットワークを作成するリージョン。これは、RDMA ネットワークの作成時に--network-profile
フラグに指定したゾーンに対応している必要があります。たとえば、ゾーンをeurope-west4-b
として指定すると、リージョンはeurope-west4
になります。IP_RANGE
: SSH ファイアウォール ルールに使用する VPC ネットワーク外の IP アドレス範囲。すべての IPv4 または IPv6 ソースではなく、アクセスを許可する必要がある特定の IP アドレス範囲を指定することをおすすめします。0.0.0.0/0
または::/0
をソース範囲として使用しないでください。これにより、 Google Cloudの外部にあるソースを含むすべての IPv4 または IPv6 ソースからのトラフィックが許可されます。RDMA_NAME_PREFIX
: IRDMA NIC タイプを使用する VPC ネットワークとサブネットに使用する名前の接頭辞。ZONE
: ネットワークとコンピューティング インスタンスを作成するゾーン。us-central1-a
またはeurope-west4-b
を使用します。
省略可: VPC ネットワーク リソースが正常に作成されたことを確認するには、 Google Cloud コンソールでネットワーク設定を確認します。
- Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。
- リストで、前の手順で作成したネットワークを検索します。
- サブネット、ファイアウォール ルール、その他のネットワーク設定を表示するには、ネットワークの名前をクリックします。
-
VM のベスト エフォート配置を行うには、コマンドで
--type=high-throughput
フラグのみを指定します。gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=high-throughput \ --region=REGION
-
VM の厳密なコロケーションを行うには、コマンドで
--max-topology-distance
フラグを指定します。gcloud compute resource-policies create workload-policy WORKLOAD_POLICY_NAME \ --type=high-throughput \ --max-topology-distance=TOPOLOGY_DISTANCE \ --region=REGION
WORKLOAD_POLICY_NAME
: ワークロード ポリシーの名前。REGION
: ワークロード ポリシーを作成するリージョン。MIG を作成するリージョンと、使用するマシンタイプを指定します。リージョンとゾーンについては、利用可能なリージョンとゾーンをご覧ください。-
VM のベスト エフォート配置を行うには、リクエストで
type
フィールドのみを次のように指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "WORKLOAD_POLICY_NAME" "workloadPolicy": { "type": "HIGH_THROUGHPUT" } }
-
VM の厳密なコロケーションを行うには、リクエストで
maxTopologyDistance
フィールドを次のように指定します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/resourcePolicies { "name": "WORKLOAD_POLICY_NAME" "workloadPolicy": { "type": "HIGH_THROUGHPUT", "maxTopologyDistance": "TOPOLOGY_DISTANCE" } }
PROJECT_ID
: プロジェクト IDREGION
: ワークロード ポリシーを作成するリージョン。MIG を作成するリージョンと、使用するマシンタイプが使用可能なリージョンを指定します。リージョンとゾーンについては、利用可能なリージョンとゾーンをご覧ください。WORKLOAD_POLICY_NAME
: ワークロード ポリシーの名前。INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。MACHINE_TYPE
: インスタンスに使用する H4D マシンタイプ。IMAGE_FAMILY
: 使用する OS イメージのイメージ ファミリー。サポートされているオペレーティング システムの一覧については、サポートされているオペレーティング システムをご覧ください。IMAGE_PROJECT
: OS イメージのプロジェクト ID。REGION
: インスタンス テンプレートを作成するリージョン。使用するマシンタイプが使用可能なリージョンを指定します。DISK_SIZE
: ブートディスクのサイズ(GiB)。GVNIC_NAME_PREFIX
: gVNIC インターフェースの標準 VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。デフォルト ネットワークを使用している場合は、
nic-type
フィールドがGVNIC
に設定された 1 つの--network-interface
フィールドのみを含めます。また、このネットワーク インターフェースのnetwork
とsubnetwork
の設定は省略します。STACK_TYPE
: 省略可。gVNIC インターフェースに使用するスタックタイプ。IPV4_ONLY
またはIPV4_IPV6
を指定します。値を指定しない場合、デフォルトでIPV4_ONLY
が使用されます。EXTERNAL_IPV4_ADDRESS
: 省略可。gVNIC ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。次のいずれかを行います。- サブネットの有効な IPv4 アドレスを指定します。
- ネットワーク インターフェースで外部 IP アドレスを使用しない場合は、フラグ
no-address
を使用します。 - ネットワーク インターフェースでエフェメラル外部 IP アドレスを受信する場合は、
address=''
を指定します。
GVNIC ネットワーク インターフェースの外部 IPv6 アドレスを指定するには、代わりに
--external-ipv6-address
フラグを使用します。RDMA_NAME_PREFIX
: IRDMA ネットワーク インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。H4D インスタンスで Cloud RDMA を使用していない場合は、IRDMA インターフェースの
--network-interface
フィールドを省略します。-
RESERVATION
: 使用する予約の名前。RESERVATION
: 予約名または予約内の特定のブロック。予約名または使用可能なブロックを取得するには、予約容量を表示するをご覧ください。インスタンスの配置の要件に基づいて、次のいずれかを選択します。複数のブロックにまたがってインスタンスを作成する場合、または単一のブロックにインスタンスを作成する場合:
projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
また、単一のブロックの場合は、ブロック コロケーション(
maxTopologyDistance=BLOCK
)を指定するワークロード ポリシーを適用して MIG を作成します。これにより、ポリシーが予約に適用され、Compute Engine によって同じブロックにインスタンスが作成されます。特定のブロックにインスタンスを作成するには:
projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
INSTANCE_TEMPLATE_NAME
: インスタンス テンプレートの名前。MACHINE_TYPE
: インスタンスに使用するマシンタイプ。H4D マシンタイプを指定します。詳細については、H4D マシンタイプをご覧ください。IMAGE_FAMILY
: 使用する OS イメージのイメージ ファミリー。サポートされているオペレーティング システムの一覧については、サポートされているオペレーティング システムをご覧ください。IMAGE_PROJECT
: OS イメージのプロジェクト ID。REGION
: インスタンス テンプレートを作成するリージョン。使用するマシンタイプが使用可能なリージョンを指定します。リージョンについては、リージョンとゾーンをご覧ください。DISK_SIZE
: ブートディスクのサイズ(GiB)。GVNIC_NAME_PREFIX
: gVNIC インターフェースの標準 VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。デフォルト ネットワークを使用している場合は、
nic-type
フィールドがGVNIC
に設定された 1 つの--network-interface
フィールドのみを含めます。また、このネットワーク インターフェースのnetwork
とsubnetwork
の設定は省略します。EXTERNAL_IPV4_ADDRESS
: 省略可。gVNIC ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。GVNIC ネットワーク インターフェースの外部 IPv6 アドレスを指定するには、代わりに
--external-ipv6-address
フラグを使用します。RDMA_NAME_PREFIX
: IRDMA ネットワーク インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。H4D インスタンスで Cloud RDMA を使用していない場合は、IRDMA インターフェースの
--network-interface
フィールドを省略します。-
RESERVATION
: 使用する予約の名前。RESERVATION
: 予約名または予約内の特定のブロック。予約名または使用可能なブロックを取得するには、予約容量を表示するをご覧ください。インスタンスの配置の要件に基づいて、次のいずれかを選択します。複数のブロックにまたがってインスタンスを作成する場合、または単一のブロックにインスタンスを作成する場合:
projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME
また、単一のブロックの場合は、ブロック コロケーション(
maxTopologyDistance=BLOCK
)を指定するワークロード ポリシーを適用して MIG を作成します。これにより、ポリシーが予約に適用され、Compute Engine によって同じブロックにインスタンスが作成されます。特定のブロックにインスタンスを作成するには:
projects/RESERVATION_OWNER_PROJECT_ID/reservations/RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME
- 任意の数の VM で開始できる複数のジョブまたは並列ジョブがある場合は、ターゲット サイズを指定して MIG を作成します。
- ジョブの開始に複数の VM が一度に必要な場合や、正確な数の VM インスタンスに分散する必要があるジョブがある場合は、MIG を作成してから、MIG でサイズ変更リクエストを作成します。
- ゾーン MIG を作成するには、次のコマンドを使用します。
gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=TARGET_SIZE \ --workload-policy=WORKLOAD_POLICY_URL \ --zone=ZONE
- リージョン MIG を作成するには、次のコマンドを使用します。
gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=TARGET_SIZE \ --workload-policy=WORKLOAD_POLICY_URL \ --region=REGION
MIG_NAME
: MIG の名前。INSTANCE_TEMPLATE_URL
: MIG で VM の作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
- グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
TARGET_SIZE
: MIG に含める VM の数。WORKLOAD_POLICY_URL
: 省略可。ワークロード ポリシーの URL。ワークロード ポリシーを使用しない場合は、--workload-policy
フラグを削除できます。ZONE
: MIG を作成するゾーン。ワークロード ポリシーを使用する場合は、ポリシーのリージョン内のゾーンを指定します。REGION
: MIG を作成するリージョン。ワークロード ポリシーを使用する場合は、ポリシーと同じリージョンを指定します。リージョン MIG の場合は、リージョンの代わりに、--zones
フラグを使用してそのリージョンのゾーンを指定できます。- ゾーン MIG を作成するには、
instanceGroupManagers.insert
メソッドにPOST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "instanceTemplate": "INSTANCE_TEMPLATE_URL", "targetSize": "TARGET_SIZE", "resourcePolicies": { "workloadPolicy": WORKLOAD_POLICY_URL } }
- リージョン MIG を作成するには、
regionInstanceGroupManagers.insert
メソッドにPOST
リクエストを送信します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "instanceTemplate": "INSTANCE_TEMPLATE_URL", "targetSize": "TARGET_SIZE", "resourcePolicies": { "workloadPolicy": WORKLOAD_POLICY_URL } }
PROJECT_ID
: プロジェクト ID。ZONE
: MIG を作成するゾーン。ワークロード ポリシーを使用する場合は、ポリシーのリージョン内のゾーンを指定します。REGION
: MIG を作成するリージョン。ワークロード ポリシーを使用する場合は、ポリシーと同じリージョンを指定します。INSTANCE_TEMPLATE_URL
: MIG で VM の作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
- グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
MIG_NAME
: MIG の名前。TARGET_SIZE
: MIG に含める VM の数。WORKLOAD_POLICY_URL
: 省略可。ワークロード ポリシーの URL。ワークロード ポリシーを使用しない場合は、resourcePolicies.workloadPolicy
フィールドを削除できます。-
ゾーン MIG とそのサイズ変更リクエストを作成するには、次の操作を行います。
-
次のように、
instance-groups managed create
コマンドを使用してゾーン MIG を作成します。gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --workload-policy=WORKLOAD_POLICY_URL \ --zone=ZONE
-
次のように、
instance-groups managed resize-requests create
コマンドを使用して、ゾーン MIG にサイズ変更リクエストを作成します。gcloud compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --zone=ZONE
-
-
リージョン MIG とそのサイズ変更リクエストを作成するには、次の操作を行います。
-
次のように、
instance-groups managed create
コマンドを使用してリージョン MIG を作成します。gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --workload-policy=WORKLOAD_POLICY_URL \ --zones=ZONE \ --target-distribution-shape=any-single-zone \ --instance-redistribution-type=none
-
次のように、ベータ版の
instance-groups managed resize-requests create
コマンドを使用して、リージョン MIG にサイズ変更リクエストを作成します。gcloud beta compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --region=REGION
-
MIG_NAME
: MIG の名前。INSTANCE_TEMPLATE_URL
: MIG で VM の作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
- グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
WORKLOAD_POLICY_URL
: 省略可。ワークロード ポリシーの URL。ワークロード ポリシーを使用しない場合は、--workload-policy
フラグを削除できます。ZONE
: MIG を作成するゾーン。リージョン MIG の場合も、ゾーンを指定する必要があります。このゾーンは、VPC ネットワークのプロファイルを含むゾーンであり、マシンタイプを使用できるゾーンである必要があります。詳細については、制限事項をご覧ください。RESIZE_REQUEST_NAME
: サイズ変更リクエストの名前。指定された MIG 内で一意である必要があります。それ以外の場合、サイズ変更リクエストは作成されません。POPULATION_METHOD
: インスタンスを MIG に追加する方法。次のいずれかを使用します。--resize-by=COUNT
: 指定された数のインスタンスを MIG に一度に追加します。インスタンス名は自動的に生成されます。--instances=INSTANCE_NAME_LIST
: 指定された名前のインスタンスを MIG に一度に追加します。INSTANCE_NAME_LIST は、インスタンス名のカンマ区切りリストに置き換えます。指定する名前の数によって、このサイズ変更リクエストで作成するインスタンスの数が決まります。
REGION
: MIG が配置されているリージョン。- ゾーン MIG とそのサイズ変更リクエストを作成するには、次の操作を行います。
- 次のように、
instanceGroupManagers.insert
メソッドにPOST
リクエストを送信して、ゾーン MIG を作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "targetSize": 0, "resourcePolicies": { "workloadPolicy": WORKLOAD_POLICY_URL } }
- 次のように、
instanceGroupManagerResizeRequests.insert
メソッドにPOST
リクエストを送信して、ゾーン MIG でサイズ変更リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }
- 次のように、
- リージョン MIG とそのサイズ変更リクエストを作成するには、次の操作を行います。
- 次のように、
regionInstanceGroupManagers.insert
メソッドにPOST
リクエストを送信して、リージョン MIG を作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "targetSize": 0, "distributionPolicy": { "targetShape": "ANY_SINGLE_ZONE", "zones": [ { "zone": "projects/PROJECT_ID/zones/ZONE" } ] }, "updatePolicy": { "instanceRedistributionType": "NONE" }, "resourcePolicies": { "workloadPolicy": WORKLOAD_POLICY_URL } }
- 次のように、
beta.regionInstanceGroupManagerResizeRequests.insert
メソッドにPOST
リクエストを送信して、リージョン MIG にサイズ変更リクエストを作成します。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }
- 次のように、
PROJECT_ID
: プロジェクト ID。ZONE
: MIG を作成するゾーン。リージョン MIG の場合も、ゾーンを指定する必要があります。このゾーンは、VPC ネットワークのプロファイルを含むゾーンであり、マシンタイプを使用できるゾーンである必要があります。詳細については、制限事項をご覧ください。REGION
: MIG を作成するリージョン。INSTANCE_TEMPLATE_URL
: MIG で VM の作成に使用するインスタンス テンプレートの URL。この URL には、インスタンス テンプレートの ID または名前を含めることができます。次のいずれかの値を指定します。- リージョン インスタンス テンプレートの場合:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID
- グローバル インスタンス テンプレートの場合:
INSTANCE_TEMPLATE_ID
- リージョン インスタンス テンプレートの場合:
MIG_NAME
: MIG の名前。WORKLOAD_POLICY_URL
: 省略可。ワークロード ポリシーの URL。ワークロード ポリシーを使用しない場合は、resourcePolicies.workloadPolicy
フィールドを削除できます。RESIZE_REQUEST_NAME
: サイズ変更リクエストの名前。指定された MIG 内で一意である必要があります。それ以外の場合、サイズ変更リクエストは作成されません。POPULATION_METHOD
: インスタンスを MIG に追加する方法。次のいずれかを使用します。"resizeBy":COUNT
: COUNT は、MIG に一度に追加するインスタンスの数に置き換えます。インスタンス名は自動的に生成されます。"instanceNames":INSTANCE_NAME_LIST
: 指定された名前のインスタンスを MIG に一度に追加します。INSTANCE_NAME_LIST は、インスタンス名のカンマ区切りリストに置き換えます。指定する名前の数によって、このサイズ変更リクエストで作成するインスタンスの数が決まります。
インスタンス テンプレートでディスクの自動削除の状態が
False
に設定されている場合、VM インスタンスが削除されてもディスクは自動的に削除されません。ディスクは、次のいずれかの方法で削除できます。コンソール
- Google Cloud コンソールで、[ディスク] ページに移動します。
このチュートリアルで作成したディスクを含む行を選択します。各ディスクの [使用中] 列が空であることを確認します。
[
削除] をクリックし、確認のため [削除] をクリックします。
gcloud
gcloud compute disks delete
コマンドを使用します。gcloud compute disks delete DISK_NAME \ --project PROJECT_ID --zone ZONE
次のように置き換えます。
- DISK_NAME : 削除するディスクの名前
- PROJECT_ID: ディスクを含むプロジェクトの ID
- ZONE: ディスクのゾーン
REST
disks.delete
メソッドを使用して、ディスクを削除します。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
次のように置き換えます。
- PROJECT_ID: ディスクを含むプロジェクトの ID
- ZONE: ディスクのゾーン
- DISK_NAME : 削除するディスクの名前
- マネージド インスタンス グループの詳細を確認する
- Compute Engine の消費オプションの詳細を確認する
- H4D マシンシリーズについて学習する
- サイズ変更リクエストを表示、キャンセル、削除する
- 予約の消費のトラブルシューティング
容量の予約
このチュートリアルのコマンドを使用するには、MIG にインスタンスを作成するための容量を予約する必要があります。
容量ブロックの将来の予約を作成する
このアクションを使用すると、選択した特定の日時から始まる定義済みの期間に容量ブロックを予約できます。予約では、クラスタ内の容量のブロックまたはサブブロックが予約されるため、VM インスタンスの高密度デプロイが可能になります。
高密度デプロイの将来の予約を作成するプロセスは次のとおりです。
予約期間全体にわたって予約済みリソースを使用するかどうかにかかわらず、予約期間全体に対して料金が発生します。詳細については、予約の課金をご覧ください。
カレンダー モードで将来の予約を作成する
予約した容量を 90 日未満で使用する必要がある場合は、Dynamic Workload Scheduler を使用してカレンダー モードで将来の予約を作成できます。将来の予約リソースを取得するプロセスは次のとおりです。
予約期間全体にわたって予約済みリソースを使用するかどうかにかかわらず、予約期間全体に対して料金が発生します。詳細については、Dynamic Workload Scheduler の料金をご覧ください。
省略可: VPC ネットワークを作成する
無効にすることを選択しない限り、各プロジェクトには デフォルト ネットワークがあります。このネットワークを使用して、インスタンスのネットワーク接続を提供できます。VM を作成するときに、VPC ネットワークとサブネットを指定できます。この構成を省略すると、デフォルトのネットワークとサブネットが使用されます。
H4D インスタンスは、Cloud RDMA を使用するように構成できます。Cloud RDMA は、Compute Engine インスタンス間のリモート ダイレクト メモリ アクセス(RDMA)をサポートする IRDMA ネットワーク ドライバを使用して、低レイテンシの信頼性の高いメッセージング機能を有効にします。
このチュートリアルでは、次のことを行います。
RDMA 対応インスタンスには、少なくとも 2 つのネットワーク インターフェース(NIC)が必要です。
Cloud RDMA を使用するインスタンスには、IRDMA
インターフェースを 1 つだけ設定できます。インスタンスごとに最大 8 つの追加の GVNIC
ネットワーク インターフェースを追加して、合計 10 個の NIC を使用できます。
インスタンスで使用する Falcon VPC ネットワークを設定するには、ドキュメントに記載されている手順に沿って操作するか、提供されているスクリプトを使用します。
手順ガイド
ネットワークを作成するには、次の操作を行います。
スクリプト
インスタンスごとに最大 9 個の GVNIC
ネットワーク インターフェースと 1 個の IRDMA
ネットワーク インターフェースを作成できます。各ネットワーク インターフェースは、別々のネットワークに接続する必要があります。ネットワークを作成するには、次のスクリプトを使用します。このスクリプトは、GVNIC
用に 2 つのネットワークを作成し、IRDMA
用に 1 つのネットワークを作成します。
省略可: ワークロード ポリシーを作成する
Compute Engine で VM インスタンスを単一のブロックまたは隣接するブロックに配置する場合は、ワークロード ポリシーを作成してインスタンスの配置を指定します。ただし、Compute Engine でインスタンスを特定のブロックに配置する場合は、この手順をスキップして、インスタンス テンプレートの作成時に予約アフィニティでブロックの名前を指定します。
ワークロード ポリシーがすでに存在する場合は、再利用できます。ワークロード ポリシーを MIG に適用すると、Compute Engine はインスタンスをできるだけ近づけて作成しようとします。アプリケーションがレイテンシの影響を受けやすく、インスタンスを近づけて配置する必要がある(最大近接性)場合は、ワークロード ポリシーの作成時に maxTopologyDistance
フィールドを指定します。
ワークロード ポリシーは、作成後に更新できません。ワークロード ポリシーを変更するには、新しいポリシーを作成する必要があります。
ワークロード ポリシーを作成するには、次のいずれかのオプションを選択します。
gcloud
ワークロード ポリシーを作成するには、
gcloud compute resource-policies create workload-policy
コマンドを使用します。
次のように置き換えます。
REST
ワークロード ポリシーを作成するには、resourcePolicies.insert
メソッドに POST
リクエストを送信します。
次のように置き換えます。
インスタンス テンプレートの作成
MIG 内の各インスタンスのインスタンス プロパティと消費プロパティを指定するには、次のいずれかの方法でインスタンス テンプレートを作成します。
gcloud
リージョン インスタンス テンプレートを作成するには、
gcloud compute instance-templates create
コマンドを使用します。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --instance-template-region=REGION \ --boot-disk-type=hyperdisk-balanced \ --boot-disk-size=DISK_SIZE \ --scopes=cloud-platform \ --network-interface=nic-type=GVNIC, \ network=GVNIC_NAME_PREFIX-net-0, \ subnet=GVNIC_NAME_PREFIX-sub-0, \ stack-type=STACK_TYPE, \ address=EXTERNAL_IPV4_ADDRESS \ --network-interface=nic-type=GVNIC, \ network=GVNIC_NAME_PREFIX-net-1, \ subnet=GVNIC_NAME_PREFIX-sub-1,no-address \ --network-interface=nic-type=IRDMA, \ network=RDMA_NAME_PREFIX-irdma, \ subnet=RDMA_NAME_PREFIX-irdma-sub, \ stack-type=IPV4_ONLY,no-address \ --reservation-affinity=specific \ --reservation=RESERVATION \ --provisioning-model=RESERVATION_BOUND \ --instance-termination-action=DELETE \ --maintenance-policy=TERMINATE
次のように置き換えます。
REST
リージョン インスタンス テンプレートを作成するには、
regionInstanceTemplates.insert
メソッドに POST
リクエストを送信します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates { "name":"INSTANCE_TEMPLATE_NAME", "properties":{ "disks":[ { "boot":true, "initializeParams":{ "diskSizeGb":"DISK_SIZE", "diskType":"hyperdisk-balanced", "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" }, "mode":"READ_WRITE", "type":"PERSISTENT" } ], "machineType":"MACHINE_TYPE", "networkInterfaces": [ { "network": "GVNIC_NAME_PREFIX-net-0", "subnetwork": "GVNIC_NAME_PREFIX-sub-0", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "External IP", "natIP": "EXTERNAL_IPV4_ADDRESS" } ], "stackType": "IPV4_ONLY", "nicType": "GVNIC", }, { "network": "GVNIC_NAME_PREFIX-net-1", "subnetwork": "GVNIC_NAME_PREFIX-sub-1", "stackType": "IPV4_ONLY", "nicType": "GVNIC", }, { "network": "RDMA_NAME_PREFIX-irdma", "subnetwork": "RDMA_NAME_PREFIX-irdma-sub", "stackType": "IPV4_ONLY", "nicType": "IRDMA", } ], , "reservationAffinity":{ "consumeReservationType":"SPECIFIC_RESERVATION", "key":"compute.googleapis.com/reservation-name", "values":[ "RESERVATION" ] }, "scheduling":{ "provisioningModel":"RESERVATION_BOUND", "instanceTerminationAction":"DELETE", "onHostMaintenance": "TERMINATE", "automaticRestart":true } } }
次のように置き換えます。
インスタンス テンプレートを作成したら、テンプレートを表示して ID を確認し、インスタンス プロパティを確認できます。
MIG を作成する
ワークロードの要件に応じて、次のいずれかの構成で MIG を作成できます。
ターゲット サイズで MIG を作成する
すべての VM インスタンスを一度に作成せずにジョブを開始できる場合は、ターゲット サイズを指定して MIG を作成します。ターゲット サイズによって、MIG 内のインスタンス数が決まります。MIG は、現在のリソースの可用性に基づいてインスタンスの作成を開始します。リソースが一時的に利用できない場合、MIG はターゲット サイズを満たすインスタンスの作成を継続的に試行します。
目標サイズを指定して MIG を作成するには、次のいずれかのオプションを選択します。
gcloud
指定したターゲット サイズで MIG を作成するには、instance-groups managed
create
コマンドを使用します。
このステップでは、MIG を作成するコマンドでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、--workload-policy
フラグを削除します。
ゾーン MIG またはリージョン MIG を次のように作成します。
REST
指定したターゲット サイズで MIG を作成するには、次のように POST
リクエストを送信します。
このステップでは、MIG を作成するリクエストでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、リクエスト本文から resourcePolicies.workloadPolicy
フィールドを削除します。
ゾーン MIG またはリージョン MIG を次のように作成します。
MIG とサイズ変更リクエストを作成する
リクエストされたすべてのインスタンスを同時に作成するには、インスタンスを含まない MIG を作成します。空の MIG を作成したら、MIG でサイズ変更リクエストを作成します。すべてのインスタンスを一度に作成できるリソースが使用可能になると、サイズ変更リクエストによってインスタンスが MIG に追加されます。
MIG とサイズ変更リクエストを作成するには、次のいずれかのオプションを選択します。
gcloud
このステップでは、MIG を作成するコマンドでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、--workload-policy
フラグを削除します。
次のように、ゾーン MIG またはリージョン MIG とサイズ変更リクエストを作成します。
次のように置き換えます。
REST
このステップでは、MIG を作成するリクエストでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、リクエスト本文から resourcePolicies.workloadPolicy
フィールドを削除します。
次のように、ゾーン MIG またはリージョン MIG とサイズ変更リクエストを作成します。
次のように置き換えます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID