予約バインドされた使用量で HPC ワークロードの MIG を作成する


このチュートリアルでは、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コンポーネントを使用します。

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

新規の 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. 容量の予約

    このチュートリアルのコマンドを使用するには、MIG にインスタンスを作成するための容量を予約する必要があります。

    容量ブロックの将来の予約を作成する

    このアクションを使用すると、選択した特定の日時から始まる定義済みの期間に容量ブロックを予約できます。予約では、クラスタ内の容量のブロックまたはサブブロックが予約されるため、VM インスタンスの高密度デプロイが可能になります。

    高密度デプロイの将来の予約を作成するプロセスは次のとおりです。

    1. AI Hypercomputer のドキュメントで、アカウント チームに連絡して容量を予約する手順に沿って操作します。将来の予約リクエストでは、次の例外を除き、ドキュメントに記載されているとおりに情報を指定します。

      • マシンタイプ: H4D マシンタイプ(h4d-standard-192h4d-highmem-192h4d-highmem-192-lssd)を指定します。
      • ゾーン: 使用可能なリージョンとゾーンの表に記載されているように、H4D インスタンスを使用できるゾーンのいずれかを指定します。H4D で使用可能なゾーンのみを表示するには、[マシンシリーズを選択] リストで H4D を選択します。
      • メンテナンス スケジューリング タイプ: H4D インスタンスの場合は、GROUPED または INDEPENDENT のいずれかを指定できます。
      • 予約の運用モード: H4D インスタンスの場合は、値 HIGHLY_AVAILABLE_CAPACITY を指定します。
    2. 容量が提供される前に割り当てが自動的に増加します。お客様側でのご対応は必要ありません。

    3. インスタンス テンプレートを作成するときに、予約バインド プロビジョニング モデルを指定します。MIG の VM インスタンスは、予約済み容量からプロビジョニングされます。

    予約期間全体にわたって予約済みリソースを使用するかどうかにかかわらず、予約期間全体に対して料金が発生します。詳細については、予約の課金をご覧ください。

    カレンダー モードで将来の予約を作成する

    予約した容量を 90 日未満で使用する必要がある場合は、Dynamic Workload Scheduler を使用してカレンダー モードで将来の予約を作成できます。将来の予約リソースを取得するプロセスは次のとおりです。

    1. Google Cloud コンソール、gcloud CLI、または Compute Engine API を使用して、使用可能な容量を検索し、リソースを予約します。
    2. 割り当ては課金されず、お客様側での対応は必要ありません。
    3. インスタンス テンプレートを作成するときに、予約バインド プロビジョニング モデルを指定します。MIG の VM インスタンスは、予約済み容量からプロビジョニングされます。

    予約期間全体にわたって予約済みリソースを使用するかどうかにかかわらず、予約期間全体に対して料金が発生します。詳細については、Dynamic Workload Scheduler の料金をご覧ください。

    省略可: VPC ネットワークを作成する

    無効にすることを選択しない限り、各プロジェクトには デフォルト ネットワークがあります。このネットワークを使用して、インスタンスのネットワーク接続を提供できます。VM を作成するときに、VPC ネットワークとサブネットを指定できます。この構成を省略すると、デフォルトのネットワークとサブネットが使用されます。

    H4D インスタンスは、Cloud RDMA を使用するように構成できます。Cloud RDMA は、Compute Engine インスタンス間のリモート ダイレクト メモリ アクセス(RDMA)をサポートする IRDMA ネットワーク ドライバを使用して、低レイテンシの信頼性の高いメッセージング機能を有効にします。

    このチュートリアルでは、次のことを行います。

    • Cloud RDMA を使用するように H4D インスタンスを構成する場合は、このセクションの手順を完了します。
    • Cloud RDMA を使用しない場合は、このセクションをスキップして、代わりにデフォルト ネットワークを使用できます。

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

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

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

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

    手順ガイド

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

    スクリプト

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

    1. 省略可: スクリプトを実行する前に、RDMA ネットワーク プロファイルを一覧表示して、使用可能なプロファイルがあることを確認します。
        gcloud beta compute network-profiles list
        
    2. 次のコードをコピーして、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 を使用します。
    3. 省略可: VPC ネットワーク リソースが正常に作成されたことを確認するには、 Google Cloud コンソールでネットワーク設定を確認します。

      1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

        [VPC ネットワーク] に移動

      2. リストで、前の手順で作成したネットワークを検索します。
      3. サブネット、ファイアウォール ルール、その他のネットワーク設定を表示するには、ネットワークの名前をクリックします。

    省略可: ワークロード ポリシーを作成する

    Compute Engine で VM インスタンスを単一のブロックまたは隣接するブロックに配置する場合は、ワークロード ポリシーを作成してインスタンスの配置を指定します。ただし、Compute Engine でインスタンスを特定のブロックに配置する場合は、この手順をスキップして、インスタンス テンプレートの作成時に予約アフィニティでブロックの名前を指定します。

    ワークロード ポリシーがすでに存在する場合は、再利用できます。ワークロード ポリシーを MIG に適用すると、Compute Engine はインスタンスをできるだけ近づけて作成しようとします。アプリケーションがレイテンシの影響を受けやすく、インスタンスを近づけて配置する必要がある(最大近接性)場合は、ワークロード ポリシーの作成時に maxTopologyDistance フィールドを指定します。

    ワークロード ポリシーは、作成後に更新できません。ワークロード ポリシーを変更するには、新しいポリシーを作成する必要があります。

    ワークロード ポリシーを作成するには、次のいずれかのオプションを選択します。

    gcloud

    ワークロード ポリシーを作成するには、 gcloud compute resource-policies create workload-policy コマンドを使用します。

    • 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 を作成するリージョンと、使用するマシンタイプを指定します。リージョンとゾーンについては、利用可能なリージョンとゾーンをご覧ください。

    REST

    ワークロード ポリシーを作成するには、resourcePolicies.insert メソッドPOST リクエストを送信します。

    • 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: プロジェクト ID
    • REGION: ワークロード ポリシーを作成するリージョン。MIG を作成するリージョンと、使用するマシンタイプが使用可能なリージョンを指定します。リージョンとゾーンについては、利用可能なリージョンとゾーンをご覧ください。
    • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。

    インスタンス テンプレートの作成

    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
    
    

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

    • 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 フィールドのみを含めます。また、このネットワーク インターフェースの networksubnetwork の設定は省略します。

    • 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

    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
          }
      }
    }
    

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

    • 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 フィールドのみを含めます。また、このネットワーク インターフェースの networksubnetwork の設定は省略します。

    • 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

    インスタンス テンプレートを作成したら、テンプレートを表示して ID を確認し、インスタンス プロパティを確認できます。

    MIG を作成する

    ワークロードの要件に応じて、次のいずれかの構成で MIG を作成できます。

    ターゲット サイズで MIG を作成する

    すべての VM インスタンスを一度に作成せずにジョブを開始できる場合は、ターゲット サイズを指定して MIG を作成します。ターゲット サイズによって、MIG 内のインスタンス数が決まります。MIG は、現在のリソースの可用性に基づいてインスタンスの作成を開始します。リソースが一時的に利用できない場合、MIG はターゲット サイズを満たすインスタンスの作成を継続的に試行します。

    目標サイズを指定して MIG を作成するには、次のいずれかのオプションを選択します。

    gcloud

    指定したターゲット サイズで MIG を作成するには、instance-groups managed create コマンドを使用します。

    このステップでは、MIG を作成するコマンドでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、--workload-policy フラグを削除します。

    ゾーン 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 フラグを使用してそのリージョンのゾーンを指定できます。

    REST

    指定したターゲット サイズで MIG を作成するには、次のように POST リクエストを送信します。

    このステップでは、MIG を作成するリクエストでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、リクエスト本文から resourcePolicies.workloadPolicy フィールドを削除します。

    ゾーン MIG またはリージョン MIG を次のように作成します。

    • ゾーン 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 とサイズ変更リクエストを作成する

    リクエストされたすべてのインスタンスを同時に作成するには、インスタンスを含まない MIG を作成します。空の MIG を作成したら、MIG でサイズ変更リクエストを作成します。すべてのインスタンスを一度に作成できるリソースが使用可能になると、サイズ変更リクエストによってインスタンスが MIG に追加されます。

    MIG とサイズ変更リクエストを作成するには、次のいずれかのオプションを選択します。

    gcloud

    このステップでは、MIG を作成するコマンドでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、--workload-policy フラグを削除します。

    次のように、ゾーン MIG またはリージョン MIG とサイズ変更リクエストを作成します。

    • ゾーン MIG とそのサイズ変更リクエストを作成するには、次の操作を行います。

      1. 次のように、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
        
      2. 次のように、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 とそのサイズ変更リクエストを作成するには、次の操作を行います。

      1. 次のように、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
          
      2. 次のように、ベータ版の 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 が配置されているリージョン。

    REST

    このステップでは、MIG を作成するリクエストでワークロード ポリシーを使用して VM の配置を指定します。ワークロード ポリシーを使用しない場合は、リクエスト本文から resourcePolicies.workloadPolicy フィールドを削除します。

    次のように、ゾーン MIG またはリージョン MIG とサイズ変更リクエストを作成します。

    • ゾーン MIG とそのサイズ変更リクエストを作成するには、次の操作を行います。
      1. 次のように、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
          }
        }
        
      2. 次のように、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 とそのサイズ変更リクエストを作成するには、次の操作を行います。
      1. 次のように、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
          }
        }
        
      2. 次のように、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 は、インスタンス名のカンマ区切りリストに置き換えます。指定する名前の数によって、このサイズ変更リクエストで作成するインスタンスの数が決まります。

    クリーンアップ

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

    プロジェクトの削除

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    リソースの削除

    1. MIG でサイズ変更リクエストを削除します。

    2. MIG とインスタンスを削除します

    3. インスタンス テンプレートでディスクの自動削除の状態が False に設定されている場合、VM インスタンスが削除されてもディスクは自動的に削除されません。ディスクは、次のいずれかの方法で削除できます。

      コンソール

      1. Google Cloud コンソールで、[ディスク] ページに移動します。

      [ディスク] に移動

      1. このチュートリアルで作成したディスクを含む行を選択します。各ディスクの [使用中] 列が空であることを確認します。

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

      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 : 削除するディスクの名前
    4. ネットワークを削除します

    5. インスタンス テンプレートを削除します

    次のステップ