リージョン内にある複数のゾーンに VM を含む MIG を作成する


このドキュメントでは、VM がリージョン内の複数のゾーンに分散するマネージド インスタンス グループ(MIG)を作成する方法について説明します。アプリケーションの負荷を複数のゾーンに分散することで、ワークロードをゾーン障害から保護できます。ゾーンに障害が発生しても、アプリケーションは、同じリージョンの残りの利用可能なゾーンで実行されているインスタンスから引き続きサービスを提供できます。

このタイプの MIG は、リージョン MIG とも呼ばれます。詳細については、リージョン MIG についてをご覧ください。

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

始める前に

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

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

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

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    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.

    詳細については、 ローカル開発環境の認証の設定 をご覧ください。

    REST

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

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

      gcloud init

制限事項

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

リージョン内にある複数のゾーンに VM を含む MIG を作成する

Google Cloud コンソールgcloud CLI、Terraform、または REST を使用します。

コンソール

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

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

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

  2. [インスタンス グループを作成] をクリックして、新しいインスタンス グループを作成します。
  3. 新しいマネージド インスタンス グループ オプションのいずれかを選択します。
  4. インスタンス グループに名前と説明(省略可)を割り当てます。
  5. インスタンス グループ用のインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します
  6. [インスタンス数] または [自動スケーリング] で、このグループのインスタンス数を指定します。ゾーンに障害が発生した場合に備えて、アプリケーションのサポートに十分な VM をプロビジョニングしてください。
  7. [ロケーション] で [複数のゾーン] を選択します。
  8. リージョンを選択し、使用するゾーンを選択します。 リージョン インスタンス テンプレートを選択した場合は、テンプレートのリージョンに基づいて [リージョン] が自動的に選択されます。
  9. [ターゲット分配形態] で [均等] を選択します。別の形態を選択する場合は、リージョン MIG の VM のターゲット分配形態を設定するをご覧ください。
  10. プロアクティブなインスタンスの再分配を無効にする場合、インスタンスの再分配で、インスタンスの再配布を許可するチェックボックスの選択を解除します。
  11. 残りの MIG 作成手順を続けます。
  12. MIG を作成するには、[作成] をクリックします。

gcloud

すべての MIG には、インスタンス テンプレートが必要です。ない場合は、インスタンス テンプレートを作成してください。たとえば、次のコマンドを使用して、デフォルト プロパティを含む基本的なインスタンス テンプレートを作成します。

gcloud compute instance-templates create example-template

次に、--region フラグを指定して instance-groups managed create コマンドを使用します。たとえば、次のコマンドは、us-east1 リージョン内の 3 つのゾーンにリージョン MIG を作成します。

gcloud compute instance-groups managed create example-rmig \
    --template example-template  \
    --size 30 \
    --region us-east1

グループで使用する特定のゾーンを選択する必要がある場合は、--zones フラグを指定します。

gcloud compute instance-groups managed create example-rmig \
    --template example-template \
    --size 30 \
    --zones us-east1-b,us-east1-c

プロアクティブなインスタンスの再配布を無効にする場合は、プロアクティブなインスタンスの再配布を無効にするをご覧ください。

Terraform

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

リージョン MIG を作成するには、google_compute_region_instance_group_manager リソースを使用します。

resource "google_compute_region_instance_group_manager" "default" {
  name                      = "example-rmig"
  region                    = "us-east1"
  distribution_policy_zones = ["us-east1-b", "us-east1-c"]
  target_size               = 30
  base_instance_name        = "instance"
  version {
    instance_template = google_compute_instance_template.default.id
  }
}

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

REST

すべての MIG には、インスタンス テンプレートが必要です。ない場合は、インスタンス テンプレートを作成してください。

次に、regionInstanceGroupManagers.insert メソッドに対する POST リクエストを作成します。リクエストの本文で、グループ名、グループサイズ、インスタンス テンプレートの URL を指定します。必要に応じて、他のフィールド(グループのベース名など)を指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE"
}

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

  • PROJECT_ID: このリクエストのプロジェクト ID。
  • REGION: グループのリージョン。
  • BASE_INSTANCE_NAME: (省略可)グループの一部として作成された各 VM インスタンスのインスタンス名。たとえば、ベース インスタンス名が example-instance の場合、example-instance-[RANDOM_STRING] のような名前のインスタンスが作成されます。ここで、[RANDOM_STRING] はサーバーによって生成されます。
  • INSTANCE_TEMPLATE_NAME: 使用するインスタンス テンプレート。リージョン インスタンス テンプレートの場合は、テンプレートの完全な 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 になります。
  • INSTANCE_GROUP_NAME: MIG の名前。
  • TARGET_SIZE: グループの VM のターゲット数。

特定のゾーンを選択する場合や、3 つ未満あるいは 3 つを超えるゾーンを含むリージョンで VM を作成する場合、リクエストに distributionPolicy プロパティを含めて、ゾーンのリストを指定します。ZONE は、VM を作成するゾーンの名前に置き換えます。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "baseInstanceName": "BASE_INSTANCE_NAME",
  "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME",
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": "TARGET_SIZE",
  "distributionPolicy": {
     "zones": [
       {"zone": "zones/ZONE"},
       {"zone": "zones/ZONE"}
      ]
   }
}

たとえば、次のようにすると、us-east1-b ゾーンと us-east1-c ゾーンにわたり、10 個のマネージド インスタンスが分配された example-rmig という名前のリージョン MIG が作成されます。

POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers

{
  "instanceTemplate": "global/instanceTemplates/example-instance",
  "name": "example-rmig",
  "targetSize": 10,
  "distributionPolicy": {
      "zones": [
        {"zone": "zones/us-east1-b"},
        {"zone": "zones/us-east1-c"}
      ]
   }
}

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

各ゾーンにグループの VM をサポートする十分なキャパシティがない場合、Compute Engine は可能な限り多くの VM を作成し、追加の容量が使用可能になると、引き続き残りの VM の作成を試みます。

リクエストで個別のゾーンを明示的に指定しない場合、Compute Engine は自動的に 3 つのゾーンを選択してそこに VM を作成します。3 つを超えるゾーンまたは 2 つ以下のゾーンに VM を作成する必要がある場合や、使用するゾーンを選択する場合は、リクエストでゾーンのリストを指定できます。詳しくは、ゾーンの選択をご覧ください。

ゾーン間での VM のディストリビューション

デフォルトでは、リージョン MIG は選択されたゾーンに VM を均等に分散します。リージョン MIG を作成する場合、GPU や既存の永続ディスクなどの特定のリソースは、ゾーンリソースという点に注意してください。MIG のインスタンス テンプレートでゾーンリソースを指定する場合、リージョン MIG によって作成された VM に接続できるように、それらのリソースが選択したすべてのゾーンに存在することを確認する必要があります。あるいは、グループがゾーンリソースの存在を確認する場合は、MIG のターゲット分配形態を設定して、そのリソースを含むゾーンにのみインスタンスを作成できます。

詳細については、次のドキュメントをご覧ください。

プロアクティブなインスタンスの再分配

プロアクティブなインスタンスの再分配は、デフォルトで有効になっています。各ゾーンの VM の数を手動で管理する必要がある場合や、MIG のターゲット分配形態を BALANCED または ANY_SINGLE_ZONE に設定する必要がある場合は、プロアクティブなインスタンスの再配布を無効にする必要があります。

詳細については、次のドキュメントをご覧ください。

次のステップ