RDMA を使用する HPC 最適化インスタンスを一括作成する


このチュートリアルでは、互いに独立した多数のハイパフォーマンス コンピューティング(HPC)仮想マシン(VM)インスタンスを作成する方法について説明します。インスタンスは H4D HPC 最適化マシンタイプを使用し、予約済みの容量ブロックで実行されます。このチュートリアルでは、Cloud RDMA を使用するように H4D インスタンスを構成する方法についても説明します。

このチュートリアルは、相互接続された HPC インスタンスのクラスタの作成に関心のある HPC エンジニア、プラットフォーム管理者、オペレーター、データと MPI のスペシャリストを対象としています。結果のインスタンスは、インスタンス管理やジョブ スケジューリングにオーケストレーターを使用しません。

目標

  1. デプロイ用に容量ブロックを予約します。
  2. 省略可: 同じブロックまたはサブブロックに VM を作成しない場合は、プレースメント ポリシーを作成します。
  3. Virtual Private Cloud ネットワークを作成します。
  4. RDMA 対応インスタンスを一括作成する。
  5. クリーンアップする。

費用

このチュートリアルでは、以下を含む、 Google Cloudの課金対象となるコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

始める前に

  1. 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.
  2. Install the Google Cloud CLI.

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. 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 the resourcemanager.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.

  6. Verify that billing is enabled for your Google Cloud project.

  7. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  8. Install the Google Cloud CLI.

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  10. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  11. 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 the resourcemanager.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.

  12. Verify that billing is enabled for your Google Cloud project.

  13. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  14. 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.
  15. デプロイ用に容量ブロックを予約する

    このドキュメントでは、アカウント チームに将来の予約リクエストの作成を依頼して、容量のブロックを予約する方法について説明します。この予約タイプを使用して、VM インスタンスの高密度デプロイの容量を取得します。すべての使用オプションの概要については、以下をご覧ください。

    このアクションを使用すると、選択した特定の日時から始まる定義済みの期間に容量ブロックを予約できます。リクエストに基づいて、将来の予約リクエストのドラフトが作成されます。この下書きリクエストを確認して送信し、 Google Cloud が承認すると、Compute Engine は空の予約を自動的に作成(自動作成)します。次に、選択した開始時刻に、Compute Engine はリクエストされた容量を自動作成された予約にプロビジョニングします。予約期間が終了するまで、予約を使用して仮想マシン(VM)インスタンスを作成できます。

    将来の予約リクエスト プロセスの一環として、Google は予約済みリソースの割り当てを管理します。割り当てをリクエストする必要はありません。承認された将来の予約の開始時刻に、予約されたリソースの割り当てが不足している場合、Google は割り当てを増やします。

    容量ブロックを予約する手順は次のとおりです。

    1. アカウント チームに連絡し、次の情報を提供して、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)。

        予約済み容量を組織内の他のプロジェクトと共有する手順は次のとおりです。

        1. まだ確認していない場合は、Google がリクエストを作成するプロジェクトで共有予約の作成が許可されていることを確認します。

        2. 予約済み容量を共有するプロジェクトの番号を指定します。組織内で最大 100 個のプロジェクトを指定できます。

      • 予約名: 予約した容量を配信するために Compute Engine が自動的に作成する予約の名前。Compute Engine は、明示的にターゲット設定された予約のみを作成します。

      • コミットメント名: 予約期間が 1 年以上の場合は、リソースベースのコミットメントを購入して、予約済みリソースに関連付ける必要があります。1 年間または 3 年間のプランでコミットメントを購入できます。予約した容量を他のプロジェクトと共有する場合、それらのプロジェクトが割引を受けるのは、容量を予約したプロジェクトと同じ Cloud 請求先アカウントを使用している場合のみです。詳細については、リソースベースのコミットメントで CUD の共有を有効にするをご覧ください。

    2. Google が将来の予約リクエストの下書きを作成し、アカウント チームから連絡があります。

    3. 下書きリクエストを確認します。予約リクエストを確認する際は、次の点に注意してください。

      • 予約済み容量は、指定した開始日時以降にのみ使用できます。
      • 指定した終了時間に達すると、Compute Engine は次の処理を行います。

        • 自動作成された予約を削除します。
        • 予約を使用している VM を停止または削除します。実行されるアクションは、VM の作成時に指定した終了アクションに基づきます。
      • 予約リクエストを送信した後に、予約容量を共有するかどうかを変更することはできません。

      将来の予約リクエストの下書きを確認するには、次のいずれかのオプションを選択します。

      コンソール

      1. Google Cloud コンソールで、[予約] ページに移動します。

        [予約] に移動

      2. [将来の予約] タブをクリックします。[将来の予約] テーブルには、プロジェクト内の将来の予約リクエストがそれぞれ一覧表示されます。表の各列はプロパティを表します。

      3. [名前] 列で、Google が作成した下書きリクエストの名前をクリックします。将来の予約リクエストの詳細が表示されたページが開きます。

      4. [基本情報] セクションで、[日付] や [共有タイプ] などのリクエストの詳細が正しいことを確認します。また、コミットメントをリクエストした場合は、コミットメントが指定されていることを確認します。

      5. これらの詳細情報に誤りがある場合は、アカウント チームにお問い合わせください。

      gcloud

      1. プロジェクトの将来の予約リクエストのリストを表示するには、--filter フラグを PROCUREMENT_STATUS=DRAFTING に設定して gcloud beta compute future-reservations list コマンドを使用します。

        gcloud beta compute future-reservations list --filter=PROCUREMENT_STATUS=DRAFTING
        
      2. コマンド出力で、アカウント チームに提供した名前の予約リクエストを探します。

      3. 下書きリクエストの詳細を表示するには、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
        
      4. コマンド出力で、予約期間や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントを購入した場合は、それが指定されていることを確認します。

      5. 詳細情報が間違っている場合は、アカウント チームにお問い合わせください。

      REST

      1. プロジェクト内の将来の予約リクエストのリストを表示するには、ベータ版の 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: リクエストが存在するゾーン。
      2. リクエストの出力で、アカウント チームに提供した名前の予約リクエストを探します。

      3. 下書きリクエストの詳細を表示するには、ベータ版 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"
        }
        
      4. 出力で、予約期間や共有タイプなどのリクエストの詳細が正しいことを確認します。また、コミットメントをリクエストした場合は、コミットメントが指定されていることを確認します。

      5. 詳細情報が間違っている場合は、アカウント チームにお問い合わせください。

    4. 内容に問題がない場合は、予約リクエストを送信します。リクエストの開始時刻より前にリクエストを送信する必要があります。

      将来の予約リクエストの下書きを送信するには、次のいずれかのオプションを選択します。

      コンソール

      1. Google Cloud コンソールで、[予約] ページに移動します。

        [予約] に移動

      2. [将来の予約] タブをクリックします。

      3. [名前] 列で、Google が作成した下書きリクエストの名前をクリックします。

      4. [送信] をクリックします。

      gcloud

      審査を受けるために下書きリクエストを送信するには、--planning-status フラグを SUBMITTED に設定して gcloud beta compute future-reservations update コマンドを使用します。

      gcloud beta compute future-reservations update FUTURE_RESERVATION_NAME \
          --planning-status=SUBMITTED \
          --zone=ZONE
      

      REST

      審査を受けるために下書きリクエストを送信するには、ベータ版の 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"
      }
      
    5. Google Cloud が送信されたリクエストをすぐに承認します。

    6. Compute Engine は、リクエストされたリソースを使用して空の予約を作成します。

    7. 予約を表示するには、AI Hypercomputer のドキュメントで予約済み容量を表示するをご覧ください。

    省略可: プレースメント ポリシーを作成する

    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
    

    次のように置き換えます。

    • POLICY_NAME: コンパクト プレースメント ポリシーの名前
    • MAX_DISTANCE: VM インスタンス間の最大距離構成。VM を隣接するブロックに配置するには 3 を指定し、VM を同じブロックに配置するには 2 を指定します。VM の配置はベスト エフォートで行われます。
    • 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"
        }
    }
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクト ID
    • REGION: プレースメント ポリシーを作成するリージョン。使用するマシンタイプが使用可能なリージョンを指定します。利用可能なリージョンについては、利用可能なリージョンとゾーンをご覧ください。
    • POLICY_NAME: コンパクト プレースメント ポリシーの名前
    • MAX_DISTANCE: VM インスタンス間の最大距離構成。VM を隣接するブロックに配置するには 3 を指定し、VM を同じブロックに配置するには 2 を指定します。VM の配置はベスト エフォートで行われます。

    Virtual Private Cloud ネットワークを作成する

    RDMA 対応インスタンスには、少なくとも 2 つのネットワーク インターフェース(NIC)が必要です。

    • NIC タイプ GVNIC: 通常の VM-VM 間通信と VM-インターネット間通信の TCP/IP トラフィックとインターネット トラフィックに gve ドライバを使用します。
    • NIC タイプ IRDMA: インスタンス間の RDMA ネットワーク通信に IDPF/iRDMA ドライバを使用します

    Cloud RDMA を使用するインスタンスには、IRDMA インターフェースを 1 つだけ設定できます。最大 8 個の追加の GVNIC ネットワーク インターフェースを追加して、インスタンスごとに合計 10 個の NIC を使用できます。

    インスタンスのネットワーク インターフェースを構成する際の次のルールを確認します。

    • 各ネットワーク インターフェースは、それぞれ異なる Virtual Private Cloud ネットワークに接続する必要があります。
    • IRDMA ネットワーク インターフェースを構成するには、まず、インスタンスと同じリージョンとゾーンに Falcon RDMA ネットワーク プロファイルを使用して VPC ネットワークを作成する必要があります。
    • GVNIC ネットワーク インターフェースの場合、ネットワークまたはサブネットを指定しないと、Compute Engine はデフォルトの VPC ネットワークと、インスタンスと同じリージョンにある自動サブネットを使用します。
    • サブネットを指定してもネットワークを指定しない場合、Compute Engine は指定されたサブネットからネットワークを推測します。
    • ネットワークを指定する場合は、サブネットを指定する必要があります。また、サブネットは同じネットワークに属している必要があります。そうしなければ、インスタンスの作成は失敗します。

    インスタンスで使用する Falcon Virtual Private Cloud(VPC)ネットワークを設定するには、ドキュメントに記載されている手順に沿って操作するか、提供されているスクリプトを使用します。

    手順ガイド

    ネットワークを作成するには、次の操作を行います。

    スクリプト

    インスタンスごとに最大 9 個の GVNIC ネットワーク インターフェースと 1 個の IRDMA ネットワーク インターフェースを作成できます。各ネットワーク インターフェースは、別々のネットワークに接続する必要があります。ネットワークを作成するには、次のスクリプトを使用します。このスクリプトは、GVNIC 用に 2 つのネットワークを作成し、Falcon VPC ネットワーク プロファイルを使用する IRDMA 用に 1 つのネットワークを作成します。

    1. 省略可: スクリプトを実行する前に、Falcon VPC ネットワーク プロファイルを一覧表示して、使用可能なプロファイルがあることを確認します。Falcon VPC ネットワーク プロファイルは、すべてのゾーンで使用できるわけではありません。

      gcloud beta compute network-profiles list --filter=falcon
      
    2. 次のコードをコピーして、Linux シェル ウィンドウで実行します。

    #!/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
    

    次のように置き換えます。

    • 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 を使用します。

    RDMA 対応インスタンスを一括作成する

    Cloud RDMA で H4D インスタンスを作成する前に、次の制限事項を確認してください。

    • Cloud RDMA ネットワーク インターフェースを持つインスタンスでは、ホスト メンテナンス イベント中にライブ マイグレーションを使用できません。メンテナンス イベント中に終了するようにインスタンスを構成する必要があります。
    • RDMA ネットワーク インターフェースと Falcon RDMA ネットワーク プロファイルを持つ VPC ネットワークでは、IPv4 アドレスのみを使用できます。
    • Cloud RDMA を使用して HPC 最適化インスタンスを作成できるのは、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
    

    次のように置き換えます。

    • NAME_PATTERN: インスタンスの名前パターン。たとえば、名前パターンに vm-# を使用すると、vm-1vm-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` 形式で予約ブロック名を指定します。

      予約名または使用可能な予約ブロックを表示するには、容量を表示するをご覧ください。

    • 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 ネットワークとサブネットの作成時に使用した名前の接頭辞。

    REST

    RDMA 対応インスタンスを一括作成するには、次の設定で beta instances.bulkInsert メソッドPOST リクエストを送信します。

    • 少なくとも 2 つのネットワーク構成(gVNIC ネットワーク インターフェース用と RDMA ネットワーク インターフェース用)を含む networkInterfaces オブジェクトを含めます。
    • コンパクト プレースメント ポリシーを使用する場合は、リクエスト本文に resourcePolicies オブジェクトも追加します。
    • インスタンスの作成時に予約済み容量ブロックを使用するには、provisioningModelRESERVATION_BOUND に設定します。
    • 必要に応じて、インスタンスの残りのプロパティをカスタマイズできます。
    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
            }
        },
        ...
      }
    }
    

    次の手順を行います。

    1. リクエスト本文の次の部分を置き換えます。

      • PROJECT_ID: インスタンスを作成するプロジェクトのプロジェクト ID。
      • ZONE: 使用するマシンタイプが使用可能なゾーンを指定します。コンパクト プレースメント ポリシーを使用している場合は、コンパクト プレースメント ポリシーと同じリージョン内のゾーンを使用します。H4D マシンタイプを利用できるリージョンについては、利用可能なリージョンとゾーンをご覧ください。
      • NAME_PATTERN: インスタンスの名前パターン。たとえば、名前パターンに vm-# を使用すると、vm-1vm-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` として指定します。

        予約名または使用可能な予約ブロックを表示するには、容量を表示するをご覧ください。

    2. 省略可: コンパクト プレースメント ポリシーを使用している場合は、リクエスト本文の ... を次のフィールドに置き換えます。

      "resourcePolicies": [
          "projects/PROJECT_ID/regions/REGION/resourcePolicies/POLICY_NAME"
      ],
      

      次のように置き換えます。

      • PROJECT_ID: コンパクト プレースメント ポリシーのプロジェクト ID。
      • REGION: コンパクト プレースメント ポリシーのリージョン。
      • POLICY_NAME: コンパクト プレースメント ポリシーの名前。
    3. リクエストを送信します。

    クリーンアップ

    このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

    プロジェクトの削除

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    リソースの削除

    1. Google Cloud コンソールで、[VM インスタンス] ページに移動します。

      [VM インスタンス] に移動

    2. このチュートリアルで作成した VM インスタンスを含む行を選択します。

    3. [削除] をクリックし、確認のため [削除] をクリックします。

    4. プレースメント ポリシーを削除するには、gcloud compute resource-policies delete コマンドを使用します。

      gcloud compute resource-policies delete POLICY_NAME \
          --region=REGION
      

      次のように置き換えます。

      • POLICY_NAME: プレースメント ポリシーの名前
      • REGION: プレースメント ポリシーが配置されているリージョン

    次のステップ