単一のゾーンに MIG を作成する


このドキュメントでは、単一のゾーン内でマネージド インスタンス グループ(MIG)を作成する方法について説明します。MIG のすべての VM を 1 つのゾーンに配置すると、レイテンシを最小限に抑えることができます。これは、特定のワークロード(バッチ ワークロードなど)に役立ちます。

このタイプの MIG は、ゾーン MIG とも呼ばれます。

MIG を作成するための基本的なシナリオもご覧ください。

始める前に

  • インスタンス テンプレートを作成します。マネージド インスタンス グループを作成するために必要です。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      詳細については Set up authentication for a local development environment をご覧ください。

      REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

制限事項

使用する構成に応じて変動する MIG の制限事項に関する全リストについては、MIG の制限事項をご覧ください。

単一のゾーンに MIG を作成する

単一のゾーンに MIG を作成するには、Google Cloud コンソールgcloud CLI、Terraform、REST のいずれかを使用します。

コンソール

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

    [インスタンス グループ] に移動

    残りの手順は、Google Cloud コンソールに表示されます。

  2. [インスタンス グループの作成] をクリックします。
  3. ステートフル MIG を作成する場合は、[新しいマネージド インスタンス グループ(ステートフル)] オプションを選択します。詳しくは、ステートフル MIG を使用する場合をご覧ください。
  4. インスタンス グループに名前と説明(省略可)を割り当てます。
  5. インスタンス グループ用のインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します
  6. このグループの VM の数を指定します。ゾーンに障害が発生した場合に備えて、アプリケーションのサポートに十分な VM をプロビジョニングしてください。
  7. [ロケーション] で [シングルゾーン] を選択します。
  8. MIG を作成するリージョンゾーンを選択します。リージョン インスタンス テンプレートを選択した場合は、テンプレートのリージョンに基づいて [リージョン] が自動的に選択されます。
  9. ステートレス MIG では、自動スケーリングがデフォルトで有効になっています。自動スケーリングでは、グループはその使用率に基づいてインスタンスを自動的に追加または削除します。
  10. また、自動修復を有効にすると、グループ内の VM に対してアプリケーション ベースのヘルスチェックを実行できます。
  11. [作成] をクリックして、新しいグループを作成します。

gcloud

MIG 内の各 VM に必要なマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートを作成します。

instance-groups managed create コマンドを使用してマネージド インスタンス グループを作成し、グループ名、グループサイズ、インスタンス テンプレート、ゾーンを指定します。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size SIZE \
    --template INSTANCE_TEMPLATE \
    --zone ZONE

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

  • INSTANCE_GROUP_NAME: このインスタンス グループの名前。
  • SIZE: インスタンス グループのサイズ。
  • INSTANCE_TEMPLATE: このグループに使用するインスタンス テンプレートの名前。リージョン インスタンス テンプレートの場合は、テンプレートの完全な URL または部分的な URL を指定する必要があります。完全な URL の例は https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template、部分的な URL の例は projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template になります。
  • ZONE: Compute Engine で使用できるゾーンのいずれか。MIG の VM をリージョン内の複数のゾーンに分散する場合は、リージョン MIG の作成をご覧ください。

必要に応じて、--base-instance-name フラグを指定できます。これらの VM は同一のテンプレートに基づいているため、各 VM には VM 名の一部としてランダムな文字列が割り当てられます。このランダムな文字列の先頭にはベース名が追加されます。たとえば、ベース名を test に設定すると、VM の名前は test-yahstest-qtyz になります。特定の名前が必要な場合は、MIG に特定の名前のインスタンスを作成するをご覧ください。

たとえば、次のコマンドは example-group という名前のインスタンス グループを作成します。このベース VM 名は test です。グループには 3 つのインスタンスが含まれます。

gcloud compute instance-groups managed create example-group \
    --base-instance-name test \
    --size 3 \
    --template an-instance-template \
    --zone us-central1-f

Terraform

MIG 内の各 VM に必要なマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートを作成します。

ゾーン MIG を作成するには、google_compute_instance_group_manager リソースを使用します。

resource "google_compute_instance_group_manager" "default" {

  name               = "example-group"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
}

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

REST

MIG 内の各 VM に必要なマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートを作成します。

instanceGroupManagers.insert メソッドを使用して、マネージド インスタンス グループを作成します。リクエスト本文で、グループ名、グループサイズ、インスタンス テンプレートの URL を追加します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
  ],
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": SIZE
}

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

  • PROJECT_ID: リクエスト対象のプロジェクト ID。
  • ZONE: リクエストのゾーン。MIG の VM をリージョン内の複数のゾーンに分散する場合は、zones/ZONEregions/REGION に置き換えてリージョンを指定します。詳細については、リージョン MIG の作成をご覧ください。
  • INSTANCE_GROUP_NAME: このインスタンス グループの名前。
  • SIZE: インスタンス グループのサイズ。
  • INSTANCE_TEMPLATE: このグループに使用するインスタンス テンプレート。

必要に応じて、base-name フィールドを指定できます。これらの VM は同一のテンプレートに基づいているため、各 VM には VM 名の一部としてランダムな文字列が割り当てられます。このランダムな文字列の先頭にはベース名が追加されます。たとえば、ベース名を test に設定すると、VM の名前は test-yahstest-qtyz になります。特定の名前が必要な場合は、MIG に特定の名前のインスタンスを作成するをご覧ください。

MIG の構成や操作に応じて、さまざまなポリシーやアクションがグループのインスタンスに影響します。どのマネージド インスタンスが起動しているかを確認するには、マネージド インスタンスのステータスの確認を参照してください。

次のステップ