ステートフル マネージド インスタンス グループ


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

ステートフル MIG を使用すると、自動修復(失敗したワークロードの自動復元)、マルチゾーン デプロイ、自動ローリング アップデートにより、ステートフル アプリケーションの稼働率と復元力を向上させることができます。

ステートフル マネージド インスタンス グループは、VM を再起動、再作成、自動修復、更新する際に、各インスタンスの固有の状態(インスタンス名、アタッチされた永続ディスク、IP アドレス、メタデータなど)を維持します。

このページでは、ステートフル MIG を使用する場合と、その仕組みの概要を説明します。詳細については、ステートフル MIG の仕組みをご覧ください。

ステートフル MIG を設定する方法については、ステートフル MIG の構成をご覧ください。

ステートフル ワークロードとステートレス ワークロードの違い

マネージド インスタンス グループを使用して、ステートフル ワークロードとステートレス ワークロードの両方をサポートできます。ステートフル ワークロードとステートレス ワークロードの主な違いは、ステートフル ワークロードは個々の VM の状態(データベース シャード、アプリの構成など)を VM のディスク上に維持するのに対し、ウェブ フロントエンドなどのステートレス ワークロードは個々の VM で状態を維持しないという点にあります。

ステートフル ワークロードの VM は、カスタムビルドされたマシンのように扱います。個々のマシンそれぞれについて、VM の ID(名前)、IP アドレス、メタデータ、データを考慮します。ステートフル ワークロードの水平スケーリングは容易ではありません。スケーリングするには、データのレプリケーション、データシャードの作成または削除、あるいはアプリケーションの構成全体の変更が必要になるためです。ステートフル ワークロードのマシンを再作成または更新する場合は、その VM に固有の状態を維持する必要があります。ステートフル アプリケーションの例としては、Cassandra、ElasticSearch、mongoDB、mySQL、PostgreSQL、Kafka などがあります。

ステートレス ワークロードの VM を相互に交換可能なものとして扱い、ワークロードを処理するために使用できる VM の数だけを考慮します。特定の VM を他の VM と区別して扱うことはありません。VM を追加または削除するだけで、簡単にステートレス ワークロードを水平スケーリングできます。アプリケーションを更新するときは、マシンを削除し、別の名前、IP アドレス、メタデータ、ディスクを使用した新しいマシンで置き換えます。ステートレス VM が削除または再作成されると、マシン上のすべてのデータが失われます。つまり、ディスクは完全に削除されるか、ゼロから再作成されます。ウェブ フロントエンドは、ステートレス アプリケーションの一例です。

ステートフル MIGステートレス MIG
ワークロード VM の再作成オペレーションの際にディスク、IP アドレス、メタデータが保持されるステートフル ワークロード。 可用性とスケーラビリティに優れたステートレス ワークロードで、水平方向のスケーリング、自動修復、自動更新、VM の再作成が行われる際にディスクと IP アドレスがゼロから再作成されます。
MIG の機能
  • 自動修復
  • 自動ローリング アップデート
  • マルチゾーン デプロイ
  • 自動修復
  • 自動ローリング アップデート
  • マルチゾーン デプロイ
  • 自動スケーリング
維持可能なアイテム
  • インスタンス名
  • 永続ディスク(インスタンス テンプレートで定義されていないディスクのサポートを含む)
  • インスタンス固有のメタデータ
  • IP アドレス
インスタンス名

いずれの MIG も、カスタム インスタンス名と維持可能なインスタンス名をサポートします。

ステートフル MIG を使用する場合

ステートフル アプリケーションやクラスタを Compute Engine にデプロイし、自動修復またはマルチゾーン デプロイで可用性を向上させる必要がある場合は、ステートフル マネージド インスタンス グループ(ステートフル MIG)の使用を検討してください。また、更新ロールアウトのオーケストレーションを行い、インスタンスの中断の許容レベルを制御することで、ステートフル インスタンスの更新を簡略化することもできます。

ステートフル MIG は、次のようなステートフルなデータや構成を使用するアプリケーションを対象としています。

  • データベース(例: Cassandra、ElasticSearch、mongoDB、ZooKeeper)。ステートフル MIG の使用を決定する前に、VM に対処する必要をなくしてアプリケーションに注力できるよう、Cloud SQL で利用可能な MySQL や PostgreSQL などのフルマネージド サービスを使用することを検討してください。
  • データ処理アプリケーション(例: Kafka、Flink)。ステートフル MIG の使用を決定する前に、VM に対処する必要をなくしてデータ処理タスクに注力できるよう、DataflowDataproc などのフルマネージド サービスを使用することを検討してください。
  • 他のステートフル アプリケーション(例: TeamCity、Jenkins、Bamboo、ステートフル IP アドレスを持つ DNS サーバー、カスタム ステートフル ワークロード)。
  • 従来のモノリシック アプリケーション。これらのアプリケーションは、ブートディスクまたは追加の永続ディスクにアプリケーションの状態を保存するか、特定の VM インスタンス名や IP アドレス、メタデータキー値といったステートフル構成を使用します。
  • チェックポインティングを使用したバッチ ワークロード。この構成では、ワークロードまたは VM の障害やインスタンスのプリエンプションを想定し、長時間実行される計算の結果をチェックポイントごとに維持できます。ステートフル MIG では、障害が発生したマシンを再作成する際に、そのマシンのデータディスクを維持できるため、最後のチェックポイントから計算を続行できます。

ゾーン障害に対する復元力を高めるには、アプリケーション レベルで複数のインスタンスにデータを複製する必要があります。ElasticSearch や Cassandra はこのような機能をサポートしています。リージョン MIG を使用すると、冗長レプリカを複数のゾーンにデプロイし、アプリケーションのデータ レプリケーション機能を利用することで、ゾーン障害に対するアプリケーションの復元力を高めることができます。ゾーンに障害が発生した場合、残りのゾーンで使用可能なレプリカからデータが提供されます。

制限事項を確認して、ステートフル MIG が要件を満たしていることを確認します。

MIG をステートフルにする要素

ステートフル構成が作成されている MIG は、ステートフルとみなされます。

MIG の作成時にステートフル構成を作成できます。または、グループ作成後に構成を追加することで、ステートレスからステートフルに変換するという方法もあります。

空でないステートフル ポリシーや、1 つ以上のインスタンス単位の空でない構成を設定することで、ステートフル構成を作成します。

  • ステートフル ポリシーでは、MIG 内のすべてのインスタンスについて維持するアイテムを定義します。
  • インスタンスごとの構成では、特定の VM インスタンスについて維持するアイテムを定義します。

この構成は、ユーザーまたは MIG によって適用された後に有効になります。

  • MIG は、新しいインスタンスと既存のインスタンスに自動的にステートフル ポリシー構成を適用します。
  • インスタンスごとの構成を作成または更新するときに、新しい構成を手動で適用するか、自動的に適用するかを選択できます。

ステートフル構成(ステートフル ポリシーまたはインスタンスごとの構成)が適用されたら、各マネージド インスタンスの保持状態を調べて構成を検証できます。

MIG のステートフル構成またはサイズに対する以降の変更(たとえば、MIG のサイズを縮小したり、MIG からインスタンスを削除または破棄したりするなどの変更)は、インスタンスについて維持される状態に影響します。

ステートフル構成

ステートフル マネージド インスタンス グループ(MIG)は、設定したインスタンス テンプレート、オプションのすべてのインスタンス構成、オプションのステートフル ポリシー、オプションのインスタンスごとの構成の組み合わせからインスタンスの構成を取得します。グループの構成を設定すると、MIG は VM の作成時にその構成を使用します。更新した構成を既存の VM に適用するには、MIG で新しい VM 構成を適用するをご覧ください。

ステートフル ポリシー

ステートフル ポリシーでは、マネージド インスタンス グループのすべてのインスタンスに共通のステートフル アイテムを定義します。ステートフル ポリシーに含める各アイテムは、MIG のインスタンス テンプレートで定義されている必要があります。

ステートフル ポリシーには次の変更を加えることができます。

  • ステートフル ポリシーにディスクを追加して、ディスクがステートフルになるように構成します。
  • ステートフル ポリシーからディスクを削除して、ディスクがステートレスになるように構成します。
  • ステートフル ポリシーにネットワーク インターフェース構成を追加して、IP アドレスをステートフルに指定します。
  • ステートフル ポリシーから構成を削除して、IP アドレスをステートレスとして扱うよう指定します。

インスタンス単位の構成

インスタンスごとの構成では、特定のマネージド インスタンスに固有のステートフル アイテム(インスタンス固有ディスク、メタデータの Key-Value ペア、IP アドレスなど)を定義します。インスタンス固有のメタデータとディスクは、MIG のインスタンス テンプレートに定義する必要はありません。ただし、ステートフル IP のネットワーク インターフェースを MIG のインスタンス テンプレートで定義する必要があります。

MIG 内の特定のインスタンスのインスタンスごとの構成を次のように変更できます。

  • インスタンス テンプレートで定義されているディスクを構成して、インスタンスに対しステートフルにする(インスタンスごとの構成にディスクを追加して)、またはステートレスにする(インスタンスごとの構成からディスクを削除して)。
  • インスタンス テンプレートで定義されていない既存のディスクを構成して、ディスクをインスタンスにアタッチしてステートフルにする(インスタンスごとの構成にディスクを追加して)、またはディスクをインスタンスから接続解除する(インスタンスごとの構成からディスクを削除して)。
  • インスタンスに固有のステートフル メタデータの Key-Value ペアを追加または削除する。
  • MIG 内のインスタンスがステートフルまたはステートレスになるように個別に IP アドレスを構成する

ステートフル構成の例

ステートフル構成の例を次に示します。

インスタンス テンプレート + ステートフル ポリシー + インスタンスごとの構成 = マネージド インスタンス構成。

この図の内容は次のとおりです。

  • インスタンス テンプレートは、MIG に含まれるすべての VM インスタンスに共通の構成を定義しています。
  • ステートフル ポリシーは、インスタンス テンプレートで定義されていて、MIG の各 VM インスタンス用に個別に作成されてアタッチされる、デバイス名 data-disk のディスクに共通のステートフル構成を定義しています。
  • インスタンスごとの構成は、node-1 という名前の特定の VM インスタンスのステートフル構成を定義しています。既存のディスク my-legacy-1node-1 インスタンスにアタッチし、ステートフルとして扱います。また、node-1 インスタンスについて、1 つのメタデータ Key-Value ペア node-id:xyz273 を個別に維持することも指定しています。

この構成例の場合、MIG は node-1 VM を作成する際に次の処理を行います。

  1. インスタンス テンプレートに従って、n2-standard-2 マシンタイプを使用します。
  2. インスタンス テンプレートに従い、Debian GPU / Linux イメージを使用し、自動生成されたディスク名 boot-node-1 とデバイス名 boot-disk のディスクとしてブートディスクを作成してアタッチします。ステートフル ポリシーまたはインスタンスごとの構成で構成されていないため、MIG は boot-node-1 ブートディスクをステートレスとして扱います。
  3. インスタンス テンプレートに従い、カスタム イメージを使用し、自動生成されたディスク名 data-disk-1 とデバイス名 data-disk のディスクとして追加のディスクを作成してアタッチします。このデバイス名はステートフル ポリシーで指定されているため、MIG はこの追加の data-disk-1 ディスクをステートフルとして扱います。
  4. インスタンスごとの構成に従い、ディスク名 my-legacy-1 の既存のディスクを、ディスクのデバイス名として legacy-disk を使用してアタッチします。このデバイス名はインスタンスごとの構成で指定されているため、MIG はこの追加の my-legacy-1 ディスクをステートフルとして扱います。
  5. 3 つのメタデータ Key-Value ペアを設定します。2 つはインスタンス テンプレート(app:example-stateful-appversion:1.0)から、1 つはインスタンスごとの構成(node-id:xyz273)から設定します。インスタンスごとの構成で指定されているため、MIG は node-id:xyz273 の Key-Value ペアをステートフルとして扱います。

MIG は node-1 VM を再作成する際に、同じ構成が引き続き有効であると想定して、ステートレス アイテムを再作成し、ステートフル アイテムを維持します。

  1. 元のイメージからブートディスクを再作成します。

    最初に boot-node-1 を削除してから、インスタンス テンプレートで指定されている Debian GNU / Linux イメージを使用してブートディスクを再作成します。

  2. 追加のディスク data-disk-1my-legacy-1 を保持します。

    VM を削除する前にこれらの追加ディスクを切断し、VM が再作成された後、VM にアタッチします。

  3. 個々のメタデータの Key-Value ペア node-id:xyz273 を保持します。

    VM の再作成後にメタデータを設定します。インスタンス テンプレートで指定された共通の Key-Value ペア(app:example-stateful-appversion:1.0)も設定します。

フィードバック

ステートフル MIG に関するユースケース、課題、フィードバックを募集しています。mig-discuss@google.com にフィードバックをお寄せください。

次のステップ