このチュートリアルでは、互いに独立した多数のハイ パフォーマンス コンピューティング(HPC)仮想マシン(VM)インスタンスを作成する方法について説明します。インスタンスは H4D HPC 最適化マシンタイプを使用し、予約済みの容量ブロックで実行されます。このチュートリアルでは、Cloud RDMA を使用するように H4D インスタンスを構成する方法についても説明します。
このチュートリアルは、相互接続された HPC インスタンスのクラスタの作成に関心のある HPC エンジニア、プラットフォーム管理者、オペレーター、データと MPI のスペシャリストを対象としています。結果のインスタンスは、インスタンス管理やジョブ スケジューリングにオーケストレーターを使用しません。
目標
- デプロイ用に容量ブロックを予約します。
- 省略可: 同じブロックまたはサブブロックに VM を作成しない場合は、プレースメント ポリシーを作成します。
- Virtual Private Cloud ネットワークを作成します。
- RDMA 対応インスタンスを一括作成します。
- クリーンアップします。
費用
このチュートリアルでは、以下を含む、 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.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith 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.enablepermission. 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.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith 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.enablepermission. 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.networkAdmingcloud 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.
- 非高密度デプロイの場合: Compute Engine インスタンスのプロビジョニング モデル
- 高密度デプロイの場合: 使用オプションを選択して容量を取得する
アカウント チームに連絡し、次の情報を提供して、Google が将来の予約リクエストのドラフトを作成できるようにします。
プロジェクト番号: アカウント チームがリクエストを作成し、Compute Engine が容量をプロビジョニングするプロジェクトの番号。プロジェクト番号の確認方法については、Resource Manager ドキュメントのプロジェクト名、番号、ID を確認するをご覧ください。
マシンタイプ: H4D HPC 最適化マシンタイプのいずれか
合計数: 予約する VM の合計数。予約できるのは、2 の倍数の VM のみです。ブロックサイズとブロックあたりの VM 数は、マシンタイプと可用性によって異なります。リクエストの詳細については、アカウント チームにお問い合わせください。
ゾーン: 容量を予約するゾーン。H4D マシンシリーズで使用可能なリージョンとゾーンを確認するには、使用可能なリージョンとゾーンの「マシンシリーズを選択」リストで
H4Dを選択します。開始時間: 予約期間の開始時間。開始時間を RFC 3339 タイムスタンプの形式で指定します。
YYYY-MM-DDTHH:MM:SSOFFSET次のように置き換えます。
YYYY-MM-DD: 4 桁の年、2 桁の月、その月の 2 桁の日をハイフン(-)で区切った形式の日付。HH:MM:SS: 24 時間制の 2 桁の時間、2 桁の分、2 桁の秒をコロン(:)で区切った形式の時刻。OFFSET: 協定世界時(UTC)のオフセット形式で示されるタイムゾーン。たとえば、太平洋標準時(PST)を使用する場合は-08:00を指定します。オフセットを使用しない場合は、Zを指定します。
終了時間: 予約期間の終了時間。RFC 3339 タイムスタンプの形式で指定します。
共有タイプ: 自動作成された予約を使用できるのが自分のプロジェクトのみか(
LOCAL)、他のプロジェクトも予約を使用できるか(SPECIFIC_PROJECTS)。予約済み容量を組織内の他のプロジェクトと共有するには、次の操作を行います。
まだ確認していない場合は、Google がリクエストを作成するプロジェクトで共有予約の作成が許可されていることを確認します。
予約済み容量を共有するプロジェクトの番号を指定します。組織で最大 100 個のプロジェクトを指定できます。
予約名: 予約した容量を提供するために Compute Engine が自動的に作成する予約の名前。Compute Engine は、明示的にターゲットに設定された予約のみを作成します。
コミットメント名: 予約期間が 1 年以上の場合は、リソースベースのコミットメントを購入して、予約済みリソースに関連付ける必要があります。コミットメントは、1 年間または 3 年間のプランで購入できます。予約した容量を他のプロジェクトと共有する場合、それらのプロジェクトが割引を受けるのは、容量を予約したプロジェクトと同じ Cloud 請求先アカウントを使用している場合のみです。詳細については、リソースベースのコミットメントで CUD の共有を有効にするをご覧ください。
Google が将来の予約リクエストのドラフトを作成すると、アカウント チームから連絡があります。
ドラフト リクエストを確認します。予約リクエストを確認する際は、次の点に注意してください。
- 予約済み容量は、指定した開始日時以降にのみ使用できます。
指定した終了時間に達すると、Compute Engine は次の処理を行います。
- 自動作成された予約を削除します。
- 予約を使用している VM を停止または削除します。実行されるアクションは、VM の作成時に指定した終了アクションに基づきます。
予約リクエストを送信した後に、予約容量を共有するかどうかは変更できません。
将来の予約リクエストのドラフトを確認するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールで、[予約] ページに移動します。
[将来の予約] タブをクリックします。[将来の予約] 表には、プロジェクトの将来の予約リクエストがそれぞれ一覧表示されます。表の各列はプロパティを表します。
[名前] 列で、Google が作成したドラフト リクエストの名前をクリックします。将来の予約リクエストの詳細が表示されたページが開きます。
[基本情報] セクションで、日付や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントをリクエストした場合は、コミットメントが指定されていることを確認します。
これらの情報に誤りがある場合は、アカウント チームにお問い合わせください。
gcloud
プロジェクトの将来の予約リクエストのリストを表示するには、
--filterフラグをPROCUREMENT_STATUS=DRAFTINGに設定してgcloud beta compute future-reservations listコマンドを使用します。gcloud beta compute future-reservations list --filter=PROCUREMENT_STATUS=DRAFTINGコマンド出力で、アカウント チームに提供した名前の予約リクエストを探します。
ドラフト リクエストの詳細を表示するには、
gcloud beta compute future-reservations describeコマンドを使用します。gcloud beta compute future-reservations describe FUTURE_RESERVATION_NAME \ --zone=ZONE次のように置き換えます。
FUTURE_RESERVATION_NAME: 将来の予約リクエストのドラフトの名前。ZONE: Google がリクエストを作成したゾーン。
出力は次のようになります。
autoCreatedReservationsDeleteTime: '2026-02-10T19:20:00Z' creationTimestamp: '2025-11-27T11:14:58.305-08:00' deploymentType: DENSE id: '7979651787097007552' kind: compute#futureReservation name: example-draft-request planningStatus: DRAFT reservationName: example-reservation schedulingType: INDEPENDENT selfLink: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/example-draft-request selfLinkWithId: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/7979651787097007552 specificReservationRequired: true specificSkuProperties: instanceProperties: localSsds: - diskSizeGb: '375' interface: NVME ... machineType: h4d-highmem-192-lssd totalCount: '2' status: autoCreatedReservations: - https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/reservations/example-reservation fulfilledCount: '2' lockTime: '2026-01-27T19:15:00Z' procurementStatus: DRAFTING timeWindow: endTime: '2026-02-10T19:20:00Z' startTime: '2026-01-27T19:20:00Z' zone: https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-bコマンド出力で、予約期間や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントを購入した場合は、それが指定されていることを確認します。
詳細情報が間違っている場合は、アカウント チームにお問い合わせください。
REST
プロジェクト内の将来の予約リクエストのリストを表示するには、ベータ版の
futureReservations.listメソッドにGETリクエストを送信します。リクエスト URL にfilterクエリ パラメータを含め、status.procurementStatus=DRAFTINGに設定します。GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations?filter=status.procurementStatus=DRAFTING
次のように置き換えます。
PROJECT_ID: Google が将来の予約のドラフト リクエストを作成したプロジェクトの ID。ZONE: リクエストが存在するゾーン。
リクエストの出力で、アカウント チームに提供した名前の予約リクエストを探します。
ドラフト リクエストの詳細を表示するには、ベータ版
futureReservations.getメソッドにGETリクエストを送信します。GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME
FUTURE_RESERVATION_NAMEは、将来の予約リクエストのドラフトの名前に置き換えます。出力は次のようになります。
{ "specificSkuProperties": { "instanceProperties": { "machineType": "h4d-highmem-192-lssd", "localSsds": [ { "diskSizeGb": "375", "interface": "NVME" }, ... ] }, "totalCount": "2" }, "kind": "compute#futureReservation", "id": "7979651787097007552", "creationTimestamp": "2025-11-27T11:14:58.305-08:00", "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/example-draft-request", "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b/futureReservations/7979651787097007552", "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/europe-west4-b", "name": "example-draft-request", "timeWindow": { "startTime": "2026-01-27T19:20:00Z", "endTime": "2026-02-10T19:20:00Z" }, "status": { "procurementStatus": "DRAFTING", "lockTime": "2026-01-27T19:15:00Z" }, "planningStatus": "DRAFT", "specificReservationRequired": true, "reservationName": "example-reservation", "deploymentType": "DENSE", "schedulingType": "INDEPENDENT", "autoCreatedReservationsDeleteTime": "2026-02-10T19:20:00Z" }出力で、予約期間や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントをリクエストした場合は、コミットメントが指定されていることを確認します。
詳細情報が間違っている場合は、アカウント チームにお問い合わせください。
すべて正しく入力されていることを確認したら、予約リクエストを送信します。リクエストの開始時刻より前にリクエストを送信する必要があります。
将来の予約リクエストのドラフトを送信するには、次のいずれかのオプションを選択します。
コンソール
Google Cloud コンソールで、[予約] ページに移動します。
[将来の予約] タブをクリックします。
[名前] 列で、Google が作成したドラフト リクエストの名前をクリックします。
[送信] をクリックします。
gcloud
審査を受けるためにドラフト リクエストを送信するには、
--planning-statusフラグをSUBMITTEDに設定してgcloud beta compute future-reservations updateコマンドを使用します。gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \ --planning-status=SUBMITTED \ --zone=ZONEREST
審査を受けるためにドラフト リクエストを送信するには、ベータ版の
futureReservations.updateメソッドにPATCHリクエストを送信します。リクエスト URL にupdateMaskクエリ パラメータを含め、planningStatusに設定します。PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=planningStatus { "name": "FUTURE_RESERVATION_NAME", "planningStatus": "SUBMITTED" }Google Cloud が、送信されたリクエストをすぐに処理します。
Compute Engine は、リクエストされたリソースを使用して空の予約を作成します。
予約を表示するには、AI Hypercomputer のドキュメントで予約済み容量を表示するをご覧ください。
POLICY_NAME: コンパクト プレースメント ポリシーの名前MAX_DISTANCE: VM インスタンス間の最大距離構成。VM を隣接するブロックに配置するには3を指定し、VM を同じブロックに配置するには2を指定します。VM の配置はベスト エフォートで行われます。REGION: プレースメント ポリシーを作成するリージョン。使用するマシンタイプが利用可能なリージョンを指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。PROJECT_ID: プロジェクト IDREGION: プレースメント ポリシーを作成するリージョン。使用するマシンタイプが利用可能なリージョンを指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。POLICY_NAME: コンパクト プレースメント ポリシーの名前MAX_DISTANCE: VM インスタンス間の最大距離構成。VM を隣接するブロックに配置するには3を指定し、VM を同じブロックに配置するには2を指定します。VM の配置はベスト エフォートで行われます。- NIC タイプ
GVNIC: 通常の VM 間通信と VM-インターネット間通信の TCP/IP トラフィックとインターネット トラフィックにgveドライバを使用します。 - NIC タイプ
IRDMA: インスタンス間の RDMA ネットワーク通信に IDPF / iRDMA ドライバを使用します - 各ネットワーク インターフェースは、それぞれ異なる Virtual Private Cloud ネットワークに接続する必要があります。
- IRDMA ネットワーク インターフェースを構成するには、まず、インスタンスと同じリージョンとゾーンに Falcon RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成する必要があります。
- GVNIC ネットワーク インターフェースの場合、ネットワークまたはサブネットを指定しないと、Compute Engine はデフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用します。
- サブネットを指定してもネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
- ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。そうしなければ、インスタンスの作成は失敗します。
GVNICネットワーク インターフェースのホスト ネットワークを作成するには、VPC ネットワークの作成と管理をご覧ください。GVNICネットワーク インターフェースを 1 つだけ構成する場合は、デフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用できます。IRDMAネットワーク インターフェースのネットワークを作成するには、RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成するをご覧ください。RDMA ネットワークの最大伝送単位(MTU)のデフォルト値(8896)を使用します。省略可: スクリプトを実行する前に、Falcon VPC ネットワーク プロファイルを一覧表示して、使用可能なプロファイルがあることを確認します。Falcon VPC ネットワーク プロファイルは、すべてのゾーンで使用できるわけではありません。
gcloud beta compute network-profiles list --filter=falcon次のコードをコピーして、Linux シェル ウィンドウで実行します。
GVNIC_NAME_PREFIX: GVNIC NIC タイプを使用する標準の VPC ネットワークとサブネットに使用する名前の接頭辞。REGION: ネットワークを作成するリージョン。これは、Falcon VPC の作成時に--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を使用します。- Cloud RDMA ネットワーク インターフェースを持つインスタンスでは、ホスト メンテナンス イベント中にライブ マイグレーションを使用できません。メンテナンス イベント中に終了するようにインスタンスを構成する必要があります。
- RDMA ネットワーク インターフェースと Falcon RDMA ネットワーク プロファイルを持つ VPC ネットワークでは、IPv4 アドレスのみを使用できます。
- Cloud RDMA を使用して HPC 最適化インスタンスを作成できるのは、H4D マシンシリーズのみです。
NAME_PATTERN: インスタンスの名前パターン。たとえば、名前パターンにvm-#を使用すると、vm-1やvm-2といった名前のインスタンスが--countフラグで指定された数まで生成されます。COUNT: 作成するインスタンスの数。MACHINE_TYPE: インスタンスに使用するマシンタイプ。H4D マシンタイプのいずれかを使用します(例:h4d-highmem-192-lssd)。IMAGE_FAMILY: 使用する OS イメージのイメージ ファミリー(例:rocky-linux-9-optimized-gcp)。サポートされている OS イメージの一覧については、サポートされているオペレーティング システムをご覧ください。IRDMA インターフェースをサポートする OS イメージ バージョンを選択します。IMAGE_PROJECT: OS イメージのプロジェクト ID(例:rocky-linux-cloud)。RESERVATION: この値には、次のいずれかを指定できます。- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
h4d-highmem-exfr-prodなど)を指定します。 - インスタンスを特定のブロックに配置し、コンパクト プレースメント ポリシーを使用しない場合は、
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME, for example,h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1` 形式で予約ブロック名を指定します。
予約名または使用可能な予約ブロックを表示するには、容量を表示するをご覧ください。
- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
REGION: 使用するマシンタイプが使用可能なリージョン(europe-west1など)を指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。DISK_SIZE: 省略可。ブートディスクのサイズ(GiB)。値は整数で指定してください。GVNIC_NAME_PREFIX: GVNIC インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。GVNIC ネットワーク インターフェースの場合、
networkフラグとsubnetフラグを省略して、代わりにdefaultネットワークを使用できます。STACK_TYPE: 省略可。GVNIC ネットワーク インターフェースのスタックタイプ。STACK_TYPEは、IPV4_ONLYまたはIPV4_IPV6のいずれかにする必要があります。デフォルト値はIPV4_ONLYです。EXTERNAL_IPV4_ADDRESS: 省略可。ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。次のいずれかを行います。- サブネットの有効な IPv4 アドレスを指定します。
- ネットワーク インターフェースで外部 IP アドレスを使用しない場合は、代わりにフラグ
no-addressを使用します。 - インターフェースでエフェメラル外部 IP アドレスを受信する場合は、
address=''を指定します。
外部 IPv6 アドレスを指定するには、代わりに
--external-ipv6-addressフラグを使用します。RDMA_NAME_PREFIX: IRDMA インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。- 少なくとも 2 つのネットワーク構成(gVNIC ネットワーク インターフェース用と RDMA ネットワーク インターフェース用)を含む
networkInterfacesオブジェクトを含めます。 - コンパクト プレースメント ポリシーを使用する場合は、リクエスト本文に
resourcePoliciesオブジェクトも追加します。 - インスタンスの作成時に予約済み容量ブロックを使用するには、
provisioningModelをRESERVATION_BOUNDに設定します。 - 必要に応じて、インスタンスの残りのプロパティをカスタマイズできます。
リクエスト本文の次の部分を置き換えます。
PROJECT_ID: インスタンスを作成するプロジェクトの ID。ZONE: 使用するマシンタイプが使用可能なゾーンを指定します。コンパクト プレースメント ポリシーを使用している場合は、コンパクト プレースメント ポリシーと同じリージョン内のゾーンを使用します。H4D マシンタイプを利用できるリージョンについては、利用可能なリージョンとゾーンをご覧ください。NAME_PATTERN: インスタンスの名前パターン。たとえば、名前パターンにvm-#を使用すると、vm-1やvm-2といった名前のインスタンスがcountフィールドで指定された数まで生成されます。COUNT: 作成するインスタンスの数。MACHINE_TYPE: インスタンスに使用するマシンタイプ。H4D マシンタイプのいずれかを使用します(例:h4d-highmem-192-lssd)。DISK_SIZE: ブートディスクのサイズ(GiB)。IMAGE_PROJECT: OS イメージのプロジェクト ID(例:debian-cloud)。IMAGE_FAMILY: 使用する OS イメージのイメージ ファミリー(例:rocky-linux-9-optimized-gcp)。サポートされている OS イメージの一覧については、サポートされているオペレーティング システムをご覧ください。IRDMA インターフェースをサポートする OS イメージ バージョンを選択します。GVNIC_NAME_PREFIX: GVNIC インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。GVNIC ネットワーク インターフェースの場合、
networkフラグとsubnetworkフィールドを省略して、代わりにdefaultネットワークを使用できます。EXTERNAL_IPV4_ADDRESS: 省略可。ネットワーク インターフェースで使用する静的外部 IPv4 アドレス。外部 IPv4 アドレスは予約済みである必要があります。RDMA_NAME_PREFIX: IRDMA インターフェースの VPC ネットワークとサブネットの作成時に使用した名前の接頭辞。RESERVATION: この値には、次のいずれかを指定できます。- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
h4d-highmem-exfr-prodなど)を指定します。 - インスタンスを特定のブロックに配置し、コンパクト プレースメント ポリシーを使用しない場合は、予約ブロック名を
RESERVATION_NAME/reservationBlocks/RESERVATION_BLOCK_NAME, for example,h4d-highmem-exfr-prod/reservationBlocks/h4d-highmem-exfr-prod-block-1` として指定します。
予約名または使用可能な予約ブロックを表示するには、容量を表示するをご覧ください。
- プレースメント ポリシーを使用している場合、または VM を予約ブロック内の任意の場所に配置できる場合は、予約名(
省略可: コンパクト プレースメント ポリシーを使用している場合は、リクエスト本文の
...を次のフィールドに置き換えます。"resourcePolicies": [ "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME" ],次のように置き換えます。
PROJECT_ID: コンパクト プレースメント ポリシーのプロジェクト ID。REGION: コンパクト プレースメント ポリシーのリージョン。POLICY_NAME: コンパクト プレースメント ポリシーの名前。
リクエストを送信します。
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
このチュートリアルで作成した VM インスタンスを含む行を選択します。
[削除] をクリックし、確認のため [削除] をクリックします。
プレースメント ポリシーを消去するには、
gcloud compute resource-policies deleteコマンドを使用します。gcloud compute resource-policies delete POLICY_NAME \ --region=REGION次のように置き換えます。
POLICY_NAME: プレースメント ポリシーの名前REGION: プレースメント ポリシーが配置されているリージョン
デプロイ用に容量ブロックを予約する
このドキュメントでは、アカウント チームに将来の予約リクエストの作成を依頼して、容量ブロックを予約する方法について説明します。この予約タイプを使用して、VM インスタンスの高密度デプロイの容量を取得します。すべての使用オプションの概要については、以下をご覧ください。
このアクションを使用すると、選択した特定の日時から始まる定義済みの期間に容量ブロックを予約できます。リクエストに基づいて、将来の予約リクエストのドラフトが作成されます。このドラフト リクエストを確認して送信し、 Google Cloud が承認すると、Compute Engine は空の予約を自動的に作成します。次に、選択した開始時刻に、Compute Engine はリクエストされた容量を自動作成された予約にプロビジョニングします。予約期間が終了するまで、予約を使用して仮想マシン(VM)インスタンスを作成できます。
将来の予約リクエスト プロセスの一環として、Google は予約済みリソースの割り当てを管理します。割り当てをリクエストする必要はありません。承認された将来の予約の開始時刻に、予約されたリソースの割り当てが不足している場合、Google は割り当てを増やします。
容量ブロックを予約する手順は次のとおりです。
省略可: プレースメント ポリシーを作成する
VM をできるだけ近づけて配置する場合は、プレースメント ポリシーを使用します。ただし、VM を特定のブロックに配置する場合は、この手順をスキップして、VM の一括作成時に必要なブロックの名前を指定します。
Cloud RDMA を使用して通信するインスタンスは、単一のゾーンに配置する必要があります。より厳密には、単一のクラスタ ファブリック内に配置する必要があります。コンパクト プレースメント ポリシーを作成し、最大距離値を指定して、ゾーン内の最小近接性を設定できます。最大距離値を指定する場合、コンパクト プレースメント ポリシーを割り当てることができるインスタンスの数には上限があり、選択する値によって上限が異なります。
コンパクト プレースメント ポリシーを作成するには、次のいずれかのオプションを選択します。
gcloud
コンパクト プレースメント ポリシーを作成するには、gcloud beta compute resource-policies create group-placement コマンドを使用します。
gcloud beta compute resource-policies create group-placement POLICY_NAME \
--collocation=collocated \
--max-distance=MAX_DISTANCE \
--region=REGION
次のように置き換えます。
REST
コンパクト プレースメント ポリシーを作成するには、beta.resourcePolicies.insert メソッドに POST リクエストを送信します。リクエストの本文に、COLLOCATED に設定された collocation フィールドと、maxDistance フィールドを含めます。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/resourcePolicies
{
"name": "POLICY_NAME",
"groupPlacementPolicy": {
"collocation": "COLLOCATED",
"maxDistance": "MAX_DISTANCE"
}
}
次のように置き換えます。
Virtual Private Cloud ネットワークを作成する
RDMA 対応インスタンスには、少なくとも 2 つのネットワーク インターフェース(NIC)が必要です。
Cloud RDMA を使用するインスタンスには、IRDMA インターフェースを 1 つだけ設定できます。最大 8 個の追加の GVNIC ネットワーク インターフェースを追加して、インスタンスごとに合計 10 個の NIC を使用できます。
インスタンスのネットワーク インターフェースを構成する際の次のルールを確認します。
インスタンスで使用する Falcon Virtual Private Cloud(VPC)ネットワークを設定するには、ドキュメントに記載されている手順で操作するか、提供されているスクリプトを使用します。
手順ガイド
ネットワークを作成するには、次の操作を行います。
スクリプト
インスタンスごとに最大 9 個の GVNIC ネットワーク インターフェースと 1 個の IRDMA ネットワーク インターフェースを作成できます。各ネットワーク インターフェースは、別々のネットワークに接続する必要があります。ネットワークを作成するには、次のスクリプトを使用します。このスクリプトは、GVNIC 用に 2 つのネットワークを作成し、Falcon VPC ネットワーク プロファイルを使用する IRDMA 用に 1 つのネットワークを作成します。
#!/bin/bash
# Create standard VPC (networks and subnets) for the two GVNIC interfaces
for N in $(seq 0 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=<var>REGION</var> \
--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
次のように置き換えます。
RDMA 対応インスタンスを一括で作成する
Cloud RDMA で H4D インスタンスを作成する前に、次の制限事項を確認してください。
次の手順では、最初の 2 つのネットワーク インターフェースが GVNIC インターフェースとして構成され、3 番目のネットワーク インターフェースが IRDMA ネットワーク インターフェースとして構成された RDMA 対応インスタンスを一括で作成する方法を示します。
gcloud
3 つの --network-interface フラグ(GVNIC インターフェース用に 2 つ、IRDMA インターフェース用に 1 つ)を指定して、gcloud compute instances create コマンドを使用します。コンパクト プレースメント ポリシーを使用することを選択した場合は、--resource-policies=POLICY_NAME フラグも追加します。POLICY_NAME は、コンパクト プレースメント ポリシーの名前に置き換えます。必要に応じて、残りのインスタンス オプションをカスタマイズできます。
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--count=COUNT \
--machine-type=MACHINE_TYPE \
--image-family=IMAGE_FAMILY \
--image=project= IMAGE_PROJECT \
--reservation-affinity=specific \
--reservation=RESERVATION \
--provisioning-model=RESERVATION_BOUND \
--instance-termination=action=DELETE \
--maintenance-policy=TERMINATE \
--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
次のように置き換えます。
REST
RDMA 対応インスタンスを一括作成するには、次の設定で beta instances.bulkInsert メソッドに POST リクエストを送信します。
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert
{
"namePattern":"NAME_PATTERN",
"count":"COUNT",
"instanceProperties":{
"machineType":"MACHINE_TYPE",
"disks":[
{
"boot":true,
"initializeParams":{
"diskSizeGb":"DISK_SIZE",
"diskType":"hyperdisk-balanced",
"sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY"
},
"mode":"READ_WRITE",
"type":"PERSISTENT"
}
],
"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
}
},
...
}
}
次の操作を行います。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトを削除する
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID