マネージド インスタンス グループの作成

このドキュメントでは、マネージド インスタンス グループ(MIG)の作成方法について説明します。MIG は、単一のエンティティとして制御する仮想マシン(VM)インスタンスのグループです。MIG は、自動修復負荷分散自動スケーリング自動更新ステートフル ワークロードなどの機能をサポートしています。

リージョン MIG またはゾーン MIG を作成できます。リージョン MIG は、1 つのリージョン内の複数のゾーンに分散されるため、ゾーン MIG と比べると可用性が高くなります。このドキュメントでは、ゾーン MIG またはリージョン MIG を作成する方法について説明します。ただし、リージョン MIG には追加のオプションと考慮事項があります。リージョン MIG の詳細については、リージョン MIG の概要をご覧ください。

インスタンス グループとその機能のコンセプトについては、インスタンス グループの概要をご覧ください。

始める前に

制限事項

  • リージョン MIG を使用すると、1 つのリージョンに最大 2,000 台の VM を作成できます。各ゾーンには最大 1,000 台の VM を作成できます。1 つのゾーン MIG には最大 1,000 台の VM を作成できます。さらに多くの VM が必要な場合は、サポートにお問い合わせください。
  • MIG を更新するときは、1 回のリクエストで最大 1,000 台の VM を指定できます。
  • ステートフル MIG が必要な場合は、ステートフル MIG 制限事項を確認してください。

  • リージョン MIG が必要な場合は、リージョン MIG の制限をご覧ください。

  • マネージド インスタンス グループの nic0 以外のインターフェースの共有 VPC は、gcloud ツールと API ではサポートされますが、Cloud Console ではサポートされません。

ステートレス MIG とステートフル MIG

MIG は、ステートレス サービスやバッチ ワークロード(ウェブサイトのフロントエンド、キューからの画像処理など)、またはステートフル アプリケーション(データベースやレガシー アプリケーションなど)に使用できます。

ステートレス アプリケーションに MIG を使用する

ステートレス アプリケーションは、実行する基盤となる仮想マシン(VM)インスタンスの特定の状態に依存しません。ステートレス MIG を使用する場合、保持されない VM プロパティ(アタッチされたディスクの内容やメモリ内データなど)にアプリケーションが依存しないようにする必要があります。アプリケーションで VM プロパティを保持する必要がある場合は、ステートフル MIG の構成をご覧ください。

デフォルトでは、MIG のすべての永続ディスクは、対応する VM の削除または再作成時にこれらのプロパティを削除または再作成します。このため、永続データとして、アタッチされたディスクに依存しないようにしてください。ステートレス MIG でデータを保持する場合は、更新されたソフトウェアと構成でカスタム イメージを定期的にメンテナンスして最新の状態を維持することをおすすめします。あるいは、起動スクリプトを使用してアプリケーションを構成し、Cloud Storage のような一元管理された別の場所に必要なデータをバックアップすることをおすすめします。

インスタンス テンプレートには、コンテナ イメージまたは関連する起動スクリプトを含むカスタム イメージを指定できます。これにより、VM が再作成されたときに、必要なアプリがインストールされ、必要なデータへのアクセス権が付与されます。インスタンス テンプレート作成の詳細については、確定的なインスタンス テンプレートをご覧ください。

ステートフル アプリケーションに MIG を使用する

マネージド インスタンス グループはステートフル アプリケーションもサポートしています。ステートフル MIG は、マシンの再起動、再作成、自動修復、更新のときに、各 VM の固有の状態(VM インスタンス名、アタッチされた永続ディスク、メタデータ)を保持します。

ステートフル MIG は、データベース、データ処理アプリケーション、従来のアプリケーション、チェックポインティングを使用して長時間実行されるバッチ ワークロードなど、ステートフルなデータまたは構成を持つアプリケーションに使用します。

ステートフルなアプリケーションまたはクラスタを Compute Engine にデプロイし、自動修復とマルチゾーン デプロイで可用性を改善する場合や、自動ローリング アップデートで更新を高速化する場合は、ステートフル MIG の使用を検討してください。

ステートフル MIG を作成する方法、またはステートフル構成を既存の MIG に追加する方法については、ステートフル MIG の構成をご覧ください。

マネージド インスタンス グループを作成する

MIG は、インスタンス テンプレートと指定されたステートフル構成に基づいて、それぞれのマネージド インスタンスを作成します。各マネージド インスタンスは、MIG 内のデータ エンティティで、実際の VM インスタンスの現在のステータスと目的の状態を含んでいます。MIG は、実際の VM の可用性を積極的に維持することによって RUNNING 状態を保ち、アプリケーションの高可用性を確保します。

MIG は、Google Cloud Consolegcloud ツール、または Compute Engine API を使用して作成できます。リージョン MIG を作成する場合は、リージョン MIG の作成をご覧ください。

Console

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

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

  2. [インスタンス グループを作成] をクリックします。

  3. ステートフル MIG を作成する場合は、[新しいマネージド インスタンス グループ(ステートフル)] オプションを選択します。詳しくは、ステートフル MIG を使用する場合をご覧ください。

  4. MIG の名前を入力し、グループを配置するゾーンを選択します。

  5. [グループの種類] で、[マネージド インスタンス グループ] を選択します。

  6. [インスタンス テンプレート] でインスタンス テンプレートを選択します。使用できるテンプレートがない場合は、インスタンス テンプレートを作成します。

  7. グループ内に作成するインスタンスの数を指定します。

  8. ステートレス MIG では、自動スケーリングを有効にすると、その使用率に基づいてインスタンスを自動的に追加または削除できます。

  9. また、自動修復を有効にすると、グループ内の VM に対してアプリケーション ベースのヘルスチェックを実行できます。

  10. [作成] をクリックして、新しいグループを作成します。

gcloud

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: このグループに使用するインスタンス テンプレートの名前。
  • ZONE: Compute Engine で使用できるゾーンのいずれか。リージョン MIG を作成する場合は、リージョン 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

API

instanceGroupManagers.insert または regionInstanceGroupManagers.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 の場合は、zones/ZONEregions/REGION に置き換えてリージョンを指定します。詳細については、リージョン MIG の作成と管理をご覧ください。
  • INSTANCE_GROUP_NAME: このインスタンス グループの名前。
  • SIZE: インスタンス グループのサイズ。
  • INSTANCE_TEMPLATE: このグループに使用するインスタンス テンプレート。

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

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

マネージド インスタンス グループのインスタンス テンプレートを変更する

新しいインスタンス テンプレートを MIG に適用する方法については、MIG 内のインスタンスの更新をご覧ください。

マネージド インスタンス グループのサイズを変更する

MIG で VM を追加または削除するには、以下のいずれかを行います。

MIG のサイズを自動的に変更する

マネージド インスタンス グループは、ワークロードに応じて VM が自動的に追加または削除されるように構成できます。トラフィックの増加をアプリケーションで適切に処理できると同時に、コンピューティング リソースの必要性が低下した場合には費用を抑えることができます。マネージド インスタンス グループのスケーリングを開始するには、インスタンス グループの自動スケーリングの記事をご覧ください。

MIG のサイズを手動で設定する

マネージド インスタンス グループの自動スケーリングをまだ設定していない場合、グループを手動でサイズ変更することで、グループ内のインスタンスの数を変更できます。サイズを大きくすると、マネージド インスタンス グループに現在のインスタンス テンプレートを使用して新しいインスタンスが追加されます。サイズを小さくすると、マネージド インスタンス グループから VM が削除されます。DELETINGCREATING、および RECREATINGcurrentAction のあるインスタンスがグループから削除された後で、スケジュールされたアクションのない実行中のインスタンスが削除されます。

グループが属するバックエンド サービスコネクション ドレインが有効になっている場合は、コネクション ドレインが有効のタイムアウトが経過してから VM インスタンスが削除されるまでに 60 秒ほどかかることがあります。

マネージド インスタンス グループのサイズを変更するには、Google Cloud Consolegcloud ツール、または Compute Engine API を使用します。

Console

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

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

  2. リストの [名前] 列で、グループサイズを変更するインスタンス グループの名前をクリックします。

  3. [編集] をクリックして、このマネージド インスタンス グループを変更します。

  4. [インスタンスの数] で、このマネージド インスタンス グループに含めるインスタンスの数を指定します。[自動スケーリング] が有効な場合は、グループのインスタンスが必要に応じて自動的に追加または削除されます。ただし、[インスタンスの最小数] および [インスタンスの最大数] の値を変更して、オートスケーラーで間接的にグループのサイズを調整することもできます。

  5. [保存] をクリックして、新しいテンプレートを適用します。

gcloud

resize コマンドを使用します。

gcloud compute instance-groups managed resize INSTANCE_GROUP_NAME \
    --size NEW_SIZE \
    --zone ZONE

API

ゾーンまたはリージョンの MIG リソースの resize メソッドを呼び出します。パラメータとして新しいインスタンス グループのサイズを指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resize?size=NEW_SIZE

インスタンス グループがリージョン マネージド インスタンス グループの場合は、zones/ZONEregions/REGION に置き換えます。

マネージド インスタンス グループのサイズ変更リクエストを行うと、システムでプロビジョニングまたは削除が可能になり次第、その VM が起動または停止します。このプロセスにかかる時間は、グループ内のインスタンスの数によっては長くなる場合があります。マネージド インスタンス グループのインスタンスのステータスを検証してください。

サイズ変更中に作成再試行モードを無効にする

デフォルトでは、VM インスタンスの初回作成に失敗すると、VM が作成されるまで、マネージド インスタンス グループが VM の作成の再試行を続けます。ただし、自動再試行が不要の場合は、インスタンス グループのサイズを変更するときに --nocreation-retries フラグを指定して再作成モードを無効にできます。このモードでは、マネージド インスタンス グループですべてのインスタンスの作成が一度だけ試行されます。インスタンスの作成時にエラーが発生した場合、このインスタンスはマネージド インスタンス グループによって作成されず、グループのマネージド インスタンスのリストから削除されます。マネージド インスタンス グループの最終的なサイズは小さくなります。

このモードは、VM の作成の最初の試行時にのみ適用されます。このモードが有効なときに VM が正常に作成されると、VM は通常のサイズ変更リクエストで作成された他のすべての VM と同じように動作します。特に、実行中の VM が後で予期せずに終了し、再作成が必要な場合、このモードは、このシナリオでの再作成の動きには影響しません。

作成の再試行無効化モードは、VM のグループが自動的に作成され、厳密な数の VM が必要ではない状況で役立ちます。リクエストしたすべてのインスタンスが作成されるまで待ち続けるよりも、マネージド インスタンス グループのサイズをできるだけ早く確定し、グループ内の VM の数を柔軟に変更できるようにした方が望ましいこともあります。インスタンスの作成は、割り当てエラーや関連のないその他の問題のために、一時的に遅れることがあります。また、いつまでも終わらないこともあります。

作成の再試行無効化モードでマネージド インスタンス グループのサイズを変更するには、gcloud ツールまたは Compute Engine API を使用します。

gcloud

--no-creation-retries フラグを指定して、ベータ版の resize コマンドを使用します。

gcloud beta compute instance-groups managed resize INSTANCE_GROUP_NAME --size NEW_SIZE \
    --no-creation-retries \
    --zone ZONE

API

ゾーン MIG リソースのベータ版 resizeAdvanced メソッドを呼び出します。リクエストの本文で新しいグループのサイズと noCreationRetries フィールドを指定します。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeAdvanced

{
 "targetSize": SIZE
 "noCreationRetries": true
}

どのインスタンスが作成され、どのモードであるかは、listManagedInstances メソッドで確認できます。作成の再試行無効化モードで作成しているインスタンスの currentActionCREATING_WITHOUT_RETRIES になります。

MIG で特定の名前のインスタンスを作成する

特定の名前に依存するシステムがある場合は、それらの名前で VM を作成できます。このようなマネージド インスタンスに割り当てた名前は、VM が再作成された場合も保持されます。特定の名前のインスタンスの追加をご覧ください。

特定のインスタンスをグループから削除する

マネージド インスタンス グループから個々の VM を削除できます。インスタンスを削除すると、インスタンス グループに指定された targetSize が縮小され、削除された VM が属するすべてのターゲット プールからその VM が削除されます。

マネージド インスタンス グループからインスタンスを削除しても、指定したオートスケーラーは変更されません。マネージド インスタンス グループからインスタンスを削除すると、オートスケーラーがグループ内のその他のインスタンスでのワークロードの増加を検出し、グループサイズを増やして元のレベルまで戻す場合があります。これを回避するには、インスタンスを削除しようとする前に、オートスケーラーを停止するか削除します。

グループが属するバックエンド サービスコネクション ドレインが有効になっている場合は、コネクション ドレインが有効のタイムアウトが経過してから VM インスタンスが削除されるまでに 60 秒ほどかかることがあります。

Google Cloud Consolegcloud ツール、または Compute Engine API を使用して、マネージド インスタンス グループからインスタンスを削除します。

Console

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

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

  2. リストの [名前] 列で、個々のインスタンスを削除するインスタンス グループの名前をクリックします。ページが開き、インスタンス グループ プロパティと、グループに含まれるインスタンスのリストが表示されます。

  3. [メンバー] セクションで、削除するインスタンスをインスタンスのリストから選択します。

  4. [インスタンスを削除] をクリックします。選択したインスタンスが削除されます。

gcloud

delete-instances コマンドを使用します。

gcloud compute instance-groups managed delete-instances INSTANCE_GROUP_NAME \
    --instances example-i3n2,example-z2x9 \
    --zone ZONE

API

ゾーンまたはリージョンの MIG リソースの deleteInstances メソッドを呼び出します。リクエスト本文で、削除する 1 つ以上のインスタンスの URL を指定します。

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

{
 "instances": [
  "zones/ZONE/instances/example-instance-i3n2",
  "zones/ZONE/instances/example-instance-l6n1"
 ]
}

インスタンス グループがリージョン マネージド インスタンス グループの場合は、zones/ZONEregions/REGION に置き換えます。

マネージド インスタンス グループのインスタンスの削除リクエストを行うと、システムで削除が可能になり次第、そのインスタンスが停止します。このプロセスにかかる時間は、グループから削除するインスタンスの数によっては長くなる場合があります。マネージド インスタンス グループのインスタンスのステータスを検証してください。

グループからのインスタンスの除外

マネージド インスタンス グループから VM インスタンスを分離すると、グループ全体に影響を与えることなく、個々の VM の問題をデバッグしやすくなります。グループからインスタンスを破棄すると、マネージド インスタンス グループに割り当てられたロードバランサからも VM が除外されます。特定の個別のインスタンスに手動で割り当てられたターゲット プールは削除されません。

インスタンスを放棄すると、インスタンス グループに指定された targetSize は縮小されますが、オートスケーラー設定の指定は何も変更されません。オートスケーラーのあるマネージド インスタンス グループでは、必要に応じて VM が引き続き自動で追加または削除されます。

グループが属するバックエンド サービスコネクション ドレインが有効になっている場合は、コネクション ドレインが有効のタイムアウトが経過してから VM インスタンスが削除されるまでに 60 秒ほどかかることがあります。

Google Cloud Consolegcloud ツール、または Compute Engine API を使用して、マネージド インスタンス グループからインスタンスを破棄します。

Console

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

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

  2. リストの [名前] 列で、インスタンスを削除するインスタンス グループの名前をクリックします。ページが開き、インスタンス グループ プロパティと、グループに含まれるインスタンスのリストが表示されます。

  3. [メンバー] セクションで、グループから削除するインスタンスをインスタンスのリストから選択します。

  4. [グループから削除] をクリックします。選択したインスタンスはグループから除外されますが、グループ外で引き続き実行されます。

gcloud

インスタンスを削除せずにインスタンス グループからインスタンスを除外するには、abandon-instances コマンドを使用します。

gcloud compute instance-groups managed abandon-instances INSTANCE_GROUP_NAME \
    --instances example-i3n2,example-z2x9 \
    --zone ZONE

API

ゾーンまたはリージョンの MIG リソースの abandonInstances メソッドを呼び出します。リクエスト本文で、破棄する 1 つ以上のインスタンスの URL を指定します。

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

{
 "instances": [
  "zones/ZONE/instances/example-instance-i3n2",
  "zones/ZONE/instances/example-instance-l6n1"
 ]
}

インスタンス グループがリージョン マネージド インスタンス グループの場合は、zones/ZONEregions/REGION に置き換えます。

マネージド インスタンス グループからインスタンスを破棄するリクエストを行うと、すぐにグループからそのインスタンスが除外されます。マネージド インスタンス グループのインスタンスのステータスを検証してください。

グループ内にインスタンスを再作成する

マネージド インスタンスを再作成すると、指定した VM が削除され、そのマネージド インスタンス グループに割り当てられているインスタンス テンプレートを使用して新しい VM が作成されます。

この方法により、最新のインスタンス テンプレートを使用するよう、特定の VM を更新できます。マネージド インスタンス グループに属するすべての VM を再作成する必要がある場合は、代わりにローリング アップデートを開始します。

グループが属するバックエンド サービスコネクション ドレインが有効になっている場合は、コネクション ドレインが有効のタイムアウトが経過してから VM インスタンスが削除されるまでに 60 秒ほどかかることがあります。

gcloud ツールまたは Compute Engine API を使用して、マネージド インスタンス グループ内の選択した VM を再作成します。

gcloud

recreate-instances コマンドを使用します。

gcloud compute instance-groups managed recreate-instances INSTANCE_GROUP_NAME \
    --instances example-i3n2,example-z2x9 \
    --zone ZONE

API

ゾーンまたはリージョンの MIG リソースの recreateInstances メソッドを呼び出します。リクエスト本文で、再作成する 1 つ以上のインスタンスの URL を指定します。

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

{
 "instances": [
  "zones/ZONE/instances/example-instance-i3n2",
  "zones/ZONE/instances/example-instance-l6n1"
 ]
}

インスタンス グループがリージョン マネージド インスタンス グループの場合は、zones/ZONEregions/REGION に置き換えます。

マネージド インスタンス グループのインスタンスの再作成リクエストを行うと、システムで新しい VM のプロビジョニングが可能になり次第、再作成された新しい VM が起動します。このプロセスにかかる時間は、再作成するインスタンスの数によっては長くなる場合があります。マネージド インスタンス グループのインスタンスのステータスを検証してください。

マネージド インスタンス グループを削除する

マネージド インスタンス グループを削除すると、グループ内のすべての VM が削除されます。このマネージド インスタンス グループに保持する必要のある VM がある場合は、最初にそのインスタンスを破棄してグループから VM を除外します。その後、マネージド インスタンス グループの削除を実行します。

Google Cloud Console または gcloud ツールを使用してマネージド インスタンス グループとそのインスタンスを削除すると、接続されているオートスケーラーも自動的に削除されます。ただし、Compute Engine API を使用する場合は、あらかじめ別のリクエストを発行して、autoscalers.delete または regionAutoscalers.delete で接続されたオートスケーラーを削除する必要があります。

Console

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

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

  2. 削除する 1 つ以上のグループをリストから選択します。

  3. [削除] をクリックして、グループとマネージド インスタンス グループ内のすべての VM を削除します。

gcloud

delete コマンドを使用します。

gcloud compute instance-groups managed delete INSTANCE_GROUP_NAME \
    --zone ZONE

API

ゾーンまたはリージョンの MIG リソースの delete メソッドを呼び出します。

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

インスタンス グループがリージョン マネージド インスタンス グループの場合は、zones/ZONEregions/REGION に置き換えます。

プリエンプティブル インスタンスのグループを作成する

マネージド インスタンス グループを使用すると、複数のプリエンプティブル インスタンスをすぐに作成できるため、マネージド インスタンス グループ内の VM の費用を削減できます。たとえば、プリエンプティブル インスタンスのグループを作成して、それを使用してバッチ処理タスクを実行し、タスクが完了したらそのグループを削除できます。

プリエンプティブ インスタンスのグループを作成するには、インスタンス テンプレートでプリエンプティブ オプションを設定し、そのテンプレートを使用してマネージド インスタンス グループを作成します。

Console

  1. Cloud Console で、[インスタンス テンプレート] ページに移動します。

    [インスタンス テンプレート] ページに移動

  2. [新しいインスタンス テンプレート] をクリックします。

  3. インスタンス テンプレートに必要なプロパティを入力します。

  4. [詳細設定を表示] をクリックして [可用性ポリシー] セクションを展開します。

  5. [プリエンプティブ] を [オン] にします。

  6. [作成] をクリックしてテンプレートを作成します。

  7. このテンプレートを使用して、マネージド インスタンス グループを作成します。

gcloud

instance-templates create コマンドを使用してインスタンス テンプレートを作成します。フラグ --preemptible を追加します。

gcloud compute instance-templates create INSTANCE_TEMPLATE \
    --preemptible

インスタンス テンプレートを作成したら、それを使用してマネージド インスタンス グループを作成します。

API

instanceTemplates.insert メソッドを呼び出して新しいインスタンス テンプレートを作成します。scheduling.preemptible プロパティを追加して、true に設定します。

{
"name": "INSTANCE_TEMPLATE",
"properties": {
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs":
      [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "scheduling":
  {
    "preemptible": true
  },
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-9"
      }
    }
  ]
  }
}

インスタンス テンプレートを作成したら、それを使用してマネージド インスタンス グループを作成します。

instanceTemplateversions フィールドを理解する

マネージド インスタンス グループを作成するときは、マネージド インスタンス グループが個々の VM インスタンスを作成するために使用するインスタンス テンプレートを指定します。デフォルトでは、Compute Engine で使用するインスタンス テンプレートは、2 つの個別の Compute Engine API プロパティ(トップレベルの instanceTemplate プロパティと versions プロパティ)で記述します。たとえば、次のマネージド インスタンス グループでは、instanceTemplateversions の両方のフィールドが入力されています。

{

 "name": "example-group",
 "zone": "zones/us-central1-a",
 "instanceTemplate": "global/instanceTemplates/example-it",
 "versions": [
  {
   "name": "v3",
   "instanceTemplate": "global/instanceTemplates/example-it",
   "targetSize": {
    "calculated": 3
   }
  }
 ]...
}

Compute Engine では、下位互換性のために、トップレベルの instanceTemplate フィールドと versions フィールドの両方の値が自動的に挿入されます。versions フィールドを指定し、トップレベルの instanceTemplates フィールドは可能であれば省略することをおすすめします。ただし、アプリケーション コードで現在トップレベルの instanceTemplate フィールドが設定されている場合は、それが有効なリクエストになります。

詳細については、versions フィールドと instanceTemplate フィールドの関係をご覧ください。

(詳細)マネージド インスタンス グループを使用したインスタンス テンプレートのカナリアテスト

マネージド インスタンス グループを作成し、VM を 2 つのグループに分けて、グループごとに異なるインスタンス テンプレートを使用させることができます。たとえば、20 個の VM インスタンスを持つマネージド インスタンス グループを作成し、10 個の VM は特定のオペレーティング イメージで実行するようにして、残りを異なるオペレーティング システム イメージで実行できます。この機能を使用すると、インスタンス テンプレートの 2 つの異なるバージョンを比較してから、いずれかに決めることができます。

詳細については、カナリア更新をご覧ください。

マネージド インスタンス グループと IAM

マネージド インスタンス グループの一部として Compute Engine により実行されるオペレーションはすべて、プロジェクトの Google API サービス アカウントにより実行されます。プロジェクトごとのサービス アカウントには、次のようなメールアドレスがあります。PROJECT_ID は対応するプロジェクトの数値 ID です。

PROJECT_ID@cloudservices.gserviceaccount.com

Google API サービス アカウントは、デフォルトの Compute Engine サービス アカウントとは異なります。

マネージド インスタンス グループが使用するサービス アカウントに十分な権限があり、インスタンス テンプレートをベースにリソースを作成できるかどうかを確認する必要があります。具体的には、インスタンス グループに VM を作成および管理するには、サービス アカウントに compute.instanceAdmin.v1、および必要に応じて serviceAccountUser のロールが付与されている必要があります。マネージド インスタンス グループがサービス アカウントとして実行できる VM を作成する場合にのみ、serviceAccountUser のロールが必要です。このアカウントは、Deployment Manager などの他のプロセスでも使用されることを覚えておいてください。

マネージド インスタンス グループの作成またはインスタンス テンプレートの更新時に、Compute Engine は、Google API サービス アカウントに次の権限があることを検証します。

  • serviceAccountUser の役割。サービス アカウントとして実行できるインスタンスを作成する場合は、重要です。
  • イメージ、ディスク、VPC ネットワーク、サブネットなどのインスタンス テンプレートから参照されるすべてのリソースに対する権限。

サービス アカウントの詳細については、サービス アカウントの概要をご覧ください。

マネージド インスタンス グループ内ですべてのインスタンスを更新する

MIG 内のインスタンスを更新するをご覧ください。

次のステップ