このドキュメントでは、VM がリージョン内の複数のゾーンに分散するマネージド インスタンス グループ(MIG)を作成する方法について説明します。アプリケーションの負荷を複数のゾーンに分散することで、ワークロードをゾーン障害から保護できます。ゾーンに障害が発生しても、アプリケーションは、同じリージョンの残りの利用可能なゾーンで実行されているインスタンスから引き続きサービスを提供できます。
このタイプの MIG は、リージョン MIG とも呼ばれます。詳細については、リージョン MIG についてをご覧ください。
MIG を作成するための基本的なシナリオもご覧ください。
始める前に
- インスタンス テンプレートを作成します。マネージド インスタンス グループを作成するために必要です。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境でコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については 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 の制限事項をご覧ください。
リージョン内にある複数のゾーンに VM を含む MIG を作成する
Google Cloud コンソール、gcloud CLI、Terraform、または REST を使用します。
このタスクに必要な権限
このタスクを行うには、次の権限が必要です。
regionInstanceGroupManagers.insert
メソッドを呼び出すのに必要なすべての権限
-
Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
残りの手順は、Google Cloud コンソールに表示されます。
-
[
インスタンス グループを作成 ] をクリックして、新しいインスタンス グループを作成します。 -
新しいマネージド インスタンス グループ オプションのいずれかを選択します。
- ステートレス(デフォルト)
- ステートフル アプリケーション
- インスタンス グループに名前と説明(省略可)を割り当てます。
- インスタンス グループ用のインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します。
- [インスタンス数] または [自動スケーリング] で、このグループのインスタンス数を指定します。ゾーンに障害が発生した場合に備えて、アプリケーションのサポートに十分な VM をプロビジョニングしてください。
-
[
ロケーション ] で [複数のゾーン] を選択します。 - リージョンを選択し、使用するゾーンを選択します。 リージョン インスタンス テンプレートを選択した場合は、テンプレートのリージョンに基づいて [リージョン] が自動的に選択されます。
- [ターゲット分配形態] で [均等] を選択します。別の形態を選択する場合は、リージョン MIG の VM のターゲット分配形態を設定するをご覧ください。
- プロアクティブなインスタンスの再分配を無効にする場合、インスタンスの再分配で、インスタンスの再配布を許可するチェックボックスの選択を解除します。
- 残りの MIG 作成手順を続けます。
- MIG を作成するには、[
作成 ] をクリックします。
すべての 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
プロアクティブなインスタンスの再配布を無効にする場合は、プロアクティブなインスタンスの再配布を無効にするをご覧ください。
MIG 内の各 VM に必要なマシンタイプ、ブートディスク イメージ、ネットワーク、その他の VM プロパティを指定するインスタンス テンプレートをまだ作成していない場合は、インスタンス テンプレートの作成を開きます。
リージョン MIG を作成するには、google_compute_region_instance_group_manager
リソースを使用します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
すべての 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 のターゲット分配形態を設定する
プロアクティブなインスタンスの再分配
プロアクティブなインスタンスの再分配は、デフォルトで有効になっています。各ゾーンの VM の数を手動で管理する必要がある場合や、MIG のターゲット分配形態を BALANCED
または ANY_SINGLE_ZONE
に設定する必要がある場合は、プロアクティブなインスタンスの再配布を無効にする必要があります。
詳細については、次のドキュメントをご覧ください。
次のステップ
- アプリケーション ベースの自動修復を設定する。これにより、MIG の各 VM でアプリケーションが意図したとおりに応答していることを定期的に確認し、応答しない VM を自動的に再作成する。
- 自動スケーリングを有効にして、負荷の増減に基づいて MIG から VM を自動的に追加または削除する。
- 新しいインスタンス テンプレート、全インスタンスの構成、またはインスタンスごとの構成を設定して適用することで、MIG の VM のすべてまたはサブセットに新しい構成を適用する方法を学習する。
- ステートフル構成を追加することで、VM の再作成、自動修復、更新などの中断を伴うイベント全体でディスク、メタデータ、IP アドレスを保持する。
- MIG での VM の削除、破棄、再作成など、マネージド インスタンスの操作の詳細を学習する。
- MIG とその VM に関する情報を表示する。
- リージョン MIG のゾーンのサービス停止をシミュレーションする。
- 外部 HTTP(S) ロードバランサのフロントエンドをインスタンス グループに追加する方法を学習する。他の種類のロードバランサについては、ロード バランシングの概要をご覧ください。