インスタンス グループ

インスタンス グループとは、単一のエンティティとして管理できる仮想マシン(VM)インスタンスの集まりです。

Compute Engine には、マネージドと非マネージドの 2 種類の VM インスタンス グループがあります。

  • マネージド インスタンス グループ(MIG)では、複数の同一 VM でのアプリケーション操作が可能です。自動スケーリング、自動修復、リージョン(マルチゾーン)デプロイメント、自動更新などの自動化 MIG サービスを活用することで、スケーラブルで可用性に優れたワークロード処理を実現します。
  • 非マネージド インスタンス グループでは、ユーザー自身が管理する一連の VM 間での負荷分散が可能です。

マネージド インスタンス グループ(MIG)

マネージド インスタンス グループ(MIG)は、次のようなシナリオに適しています。

  • ステートレスのサービス提供側のワークロード(ウェブサイト フロントエンドなど)
  • 高性能または高スループットのステートレスなバッチ処理用コンピューティング ワークロード(キューからの画像処理など)
  • ステートフル アプリケーション(データベース、レガシー アプリケーション、チェックポインティングを使用した長時間実行バッチ計算(ベータ版)など)

MIG 内の各マネージド インスタンスは、インスタンス テンプレートから作成されます。

MIG の作成方法については、マネージド インスタンス グループの作成を参照してください。

利点

MIG には次のような利点があります。

  • 高可用性
    • VM インスタンスを実行し続ける。グループ内の VM がインスタンス グループの管理コマンド以外の操作(意図的なスケールインなど)によって停止、クラッシュ、削除された場合、MIG は元のインスタンスの仕様(同じインスタンス名、同じインスタンス テンプレート)に合わせてその VM を自動的に再作成し、作業を再開できるようにします。
    • アプリケーション ベースの自動修復。アプリケーション ベースのヘルスチェックを使用する自動修復ポリシーを設定することもできます。このヘルスチェックは、MIG の各インスタンスでアプリケーションが意図したとおりに応答していることを定期的に確認します。アプリケーションが VM で応答していない場合、その VM は自動的に再作成されます。アプリケーションが応答していることを確認するほうが、単に VM が起動して実行されていることを確認するよりも正確な結果を得られます。
    • リージョン(マルチゾーン)カバレッジ。リージョン MIG を使用すると、アプリの負荷を複数のゾーンに分散できます。このレプリケーション機能により、ゾーン障害から守られます。万が一、ゾーン障害が発生した場合でも、アプリケーションは同じリージョン内の他の利用可能なゾーンで実行されているインスタンスからトラフィックの処理を続行できます。
    • 負荷分散。MIG は負荷分散サービスと連携して、グループ内のすべてのインスタンスにトラフィックを分散します。
  • スケーラビリティ。アプリケーションに追加のコンピューティング リソースが必要な場合は、自動スケーリングされた MIG によってグループ内のインスタンス数を自動的に増やし、需要に応じることができます。需要が低下した場合、自動スケーリングされた MIG は自動的に縮小するため、コストを削減できます。
  • 自動更新。MIG の自動更新機能を使用すると、MIG 内のインスタンスに新しいバージョンのソフトウェアを安全にデプロイし、ローリング アップデートやカナリア更新など、あらゆるロールアウト シナリオに柔軟に対応できます。また、デプロイメントの速度と範囲にとどまらず、サービス中断のレベルまで自在に制御可能です。
  • ステートフル ワークロードのサポート。MIG では、可用性の高いデプロイメントを構築し、ステートフルデータまたは構成(データベース、DNS サーバー、従来のモノリシック アプリケーション、チェックポインティングを使用した長時間実行バッチ計算など)を使用するアプリケーションの操作を自動化できます。ステートフル MIG は、マシンの再起動、再作成、自動修復、更新時に、各インスタンスの固有の状態(インスタンス名、接続された永続ディスク、メタデータ)を保持します。
MIG の機能と一般的なワークロードの概要

自動修復

マネージド インスタンス グループは、インスタンスを実行可能な状態(RUNNING 状態)にしておくことで、アプリケーションの高可用性を維持します。MIG では、RUNNING 状態でないインスタンスは自動的に再作成されます。ただし、VM の状態にのみ依存するのでは不十分な場合もあります。たとえばアプリケーションのフリーズ、クラッシュ、メモリ不足が発生した際に、インスタンスの再作成が必要なこともあります。

アプリケーション ベースの自動修復は、フリーズ、クラッシュ、過負荷などのアプリケーション固有の問題を検出するヘルスチェック シグナルに依存して行われるため、アプリケーションの可用性の向上に役立ちます。ヘルスチェックにより VM でアプリケーションがエラーになっていると判断されると、その VM インスタンスは MIG により自動的に再作成されます。

ヘルスチェック

MIG をモニタリングするために使用されるヘルスチェックは、負荷分散のためのヘルスチェックと似ていますが、動作に多少の違いがあります。負荷分散のヘルスチェックは、応答していないインスタンスから正常なインスタンスにトラフィックを振り替えるのに役立ちます。これらのヘルスチェックによって Compute Engine でインスタンスが再作成されることはありません。一方、マネージド インスタンス グループのヘルスチェックでは、インスタンスが UNHEALTHY になった場合、インスタンスの削除と再作成を求める通知が事前に送信されます。

大半のシナリオでは、負荷分散と自動修復にそれぞれ別のヘルスチェックを使用します。負荷分散のヘルスチェックとは、インスタンスがユーザー トラフィックを受信しているかどうかの確認です。そのため、より積極的な実施が可能で、またそのように実施すべきです。サービスを期待しているお客様のために、応答していないインスタンスをすばやくキャッチし、必要に応じてトラフィックをリダイレクトできるようにします。対照的に、自動修復のヘルスチェックでは、障害が発生しているインスタンスが MIG によってプロアクティブに置き換えられるので、このヘルスチェックは負荷分散のヘルスチェックより慎重に実施しなければなりません。

詳細については、MIG のヘルスチェックと自動修復の設定をご覧ください。

リージョン グループとゾーングループ

2 つのタイプの MIG を作成できます。

  • ゾーン MIG: インスタンスを単一のゾーンにデプロイします。
  • リージョン MIG: インスタンスを同じリージョン内の複数のゾーンにデプロイします。

どちらのタイプでも、MIG の利点のすべてを享受できます。リージョン MIG は、アプリケーション負荷を複数のゾーンに分散させることで高可用性を実現し、ゾーン障害からワークロードを守ります。また、リージョン MIG のほうが容量が大きく、リージョン グループあたりで 2,000 個までインスタンスを作成できます。

負荷分散

Google Cloud の負荷分散では、インスタンス グループを使用してトラフィックを処理します。このインスタンス グループは、選択したロードバランサのタイプに応じてターゲット プールやバックエンド サービスに追加できます。

詳細については、インスタンス グループをロードバランサに追加するをご覧ください。

自動スケーリング

MIG がサポートする自動スケーリング機能は、負荷の増減に応じて、MIG を対象とする動的なインスタンスの追加または削除を行います。グループのスケーリング方法を具体的に指定するには、自動スケーリングを有効にし、自動スケーリング ポリシーを構成します。自動スケーリングのポリシーでは、CPU 使用率、負荷分散能力、Stackdriver Monitoring の指標や、Pub/Sub などのキューベースのワークロード(ゾーン MIG の場合)に基づいたスケーリングを指定できます。

詳細については、インスタンスのグループの自動スケーリングをご覧ください。

自動更新

MIG 内のインスタンスに新しいバージョンのソフトウェアを簡単かつ安全にデプロイできます。更新のロールアウトは、仕様に基づいて自動的に行われます。アプリケーションの中断を最小限に抑えるために、更新ロールアウトの速度と範囲を制御できます。部分的ロールアウトを実行して、カナリアテストを行うこともできます。

MIG の更新をご覧ください。

ステートフル ワークロードのサポート

ステートフル マネージド インスタンス グループ(ステートフル MIG)を使用すると、高可用性のステートフル ワークロードを VM にデプロイできます。ステートフル ワークロードには、ステートフルデータまたは構成を使用するアプリケーション(データベース、DNS サーバー、従来のモノリシック アプリケーション、チェックポインティングを使用した長時間実行バッチ計算など)が含まれます。

自動修復更新の管理マルチゾーン デプロイを行うことで、これらのアプリケーションの稼働率と復元力を向上させることができます。カスタマイズ可能なインスタンス名、永続ディスク、メタデータなどのインスタンスの固有の状態は保持できます。

詳細については、ステートフル MIG をご覧ください。

プリエンプティブル インスタンスのグループ

コストが最小限であることが実行速度よりも重要なワークロードの場合は、プリエンプティブ VM インスタンスをインスタンス グループで使用することでワークロードのコストを削減できます。プリエンプティブル インスタンスは最長 24 時間持続し、正常にプリエンプトされます。この場合、アプリケーションを 30 秒以内に終了する必要があります。プリエンプティブル インスタンスはいつでも削除される可能性がありますが、このインスタンスはプリエンプティブル容量が再び利用可能になった後、自動修復によって元に戻されます。

コンテナ

マネージド インスタンス グループ内のインスタンスにコンテナをデプロイすることによって、アプリケーションのデプロイメントを簡単にできます。インスタンス テンプレートでコンテナ イメージを指定し、そのテンプレートを使用してマネージド インスタンス グループを作成すると、各 VM が Container-Optimized OS(Docker を含む)とともに作成され、コンテナはグループ内の各 VM で自動的に起動します。VM と MIG へのコンテナのデプロイをご覧ください。

ネットワークとサブネット

マネージド インスタンス グループを作成するときは、既存のインスタンス テンプレートを参照する必要があります。このインスタンス テンプレートで、メンバー インスタンスで使用する VPC ネットワークとサブネットを定義します。自動モード VPC ネットワークの場合、サブネットを省略できます。これによって、Google Cloud ではテンプレートで指定したリージョンに自動的に作成されたサブネットが選択されます。VPC ネットワークを省略すると、Google Cloud は default という名前の VPC ネットワークを使用しようとします。

詳細については、ネットワークとサブネットをご覧ください。

MIG 機能のデモ

Google Cloud NEXT '18 の 45 分間の動画プレゼンテーションでは、Compute Engine MIG を使用してスケーラブルで可用性の高いデプロイメントを設定、実行、更新するためのデモとベスト プラクティスが紹介されています。

この動画では、コンテナを MIG にデプロイする方法、自動修復ポリシーの設定方法、リージョン グループを使用してゾーン障害から守る方法、CPU ターゲットとキューベースの需要を満たす自動スケーリングの構成方法、カナリア更新とローリング アップデートの管理方法について説明します。

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

非マネージド インスタンス グループには、グループで任意に追加、削除できる異種のインスタンスを含めることができます。非マネージド インスタンス グループでは自動スケーリング、自動修復、マルチゾーン サポート、ローリング アップデート、インスタンス テンプレートを利用できないため、可用性の高いスケーラブルなワークロードのデプロイメントには適しません。非マネージド インスタンス グループが適しているのは、異種のインスタンスのグループを負荷分散したり、ユーザー自身でインスタンスを管理したりする必要がある場合です。

非マネージド インスタンス グループを作成する必要がある場合は、非マネージド インスタンス グループをご覧ください。

次のステップ