ステートフル MIG の仕組み


ステートフル マネージド インスタンス グループ(ステートフル MIG)は、マシンの再起動、再作成、自動修復、更新が行われるときに、VM 名、アタッチしている永続ディスク、IP アドレス、メタデータなど、各仮想マシン(VM)インスタンスの一意の状態を保持します。

このページでは、ステートフル MIG の仕組みについて説明します。ステートフル MIG の設定方法については、ステートフル MIG の構成をご覧ください。

ステートフル MIG の仕組みの概要

ステートフル構成を作成した場合、MIG はステートフルとみなされます。

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

この構成は、ユーザーまたは MIG が適用した後に有効になります。

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

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

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

マネージド インスタンスにステートフル構成を適用する方法

ステートフル構成は、ユーザーまたは MIG が適用した後に有効になります。MIG のインスタンスにステートフル構成を適用する方法は、構成によって異なります。

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

マネージド インスタンスへのステートフル構成の適用

インスタンスにステートフル ポリシーの更新を適用する方法

ステートフル ディスクの追加や削除を行うステートフル ポリシーを作成または更新すると、MIG はステートフル ポリシー構成をグループ内のすべてのマネージド インスタンスに自動的かつ非同期に適用します。たとえば、MIG のサイズが増えた場合や MIG に手動でインスタンスを作成した場合、MIG はインスタンスの作成時にステートフル ポリシー構成を新しいインスタンスに自動的に適用します。

構成が適用されると、各マネージド インスタンスの保持状態をポリシーで調べることで、更新の効果を確認できます。

ステートフル ポリシーを更新しても、実行中の VM は中断されません。

ステートフル ポリシーを更新してステートフル ディスクを追加すると、MIG は各 VM のリソースを更新し、ディスクの autoDelete フラグ(instances.disks[].autoDelete)の値を変更します。

  • MIG は、ステートフルとして構成したディスクの autoDeleteFALSE に設定します。これにより、自動修復、更新、手動再作成でインスタンスが再作成されるときに、ディスクの削除を防ぐことができます。
  • MIG は、ステートレスにするすべてのディスクのインスタンス テンプレートの構成instanceTemplates.disks[].autoDelete)に一致するように autoDelete を設定します。

autoDelete フラグの値を変更しても、実行中の VM は中断されません。

インスタンスごとの構成の更新をインスタンスに適用する方法

インスタンスごとの構成を作成または更新するときに、新しい構成を手動で適用するか、自動的に適用するかを選択できます。詳細については、インスタンスごとの構成からのステートフル構成の適用をご覧ください。

次の表に、インスタンスごとに異なる構成の更新を VM に適用するために必要な中断レベルを示します。

インスタンスごとの構成の更新 適用に必要な VM の中断
インスタンス テンプレートに定義されたディスクをステートフルに構成する(インスタンスごとの構成に追加) 更新
インスタンス テンプレートに定義されたディスクをステートレスに構成する(インスタンスごとの構成から削除) 更新
インスタンス テンプレートに定義されていないディスクを追加し、VM に接続する 更新
インスタンス テンプレートに定義されていないディスクを削除し、VM から接続解除する 更新
メタデータの Key-Value ペアを追加する 更新
メタデータの Key-Value ペアを削除する 更新
インスタンス テンプレート以外から作成された外部ブートディスクを追加し、VM に接続する 変更
インスタンス テンプレート以外から作成された外部ブートディスクを削除し、VM から接続解除して、インスタンス テンプレートからブートディスクを作成する 変更
内部 IP アドレスを設定する 変更
内部 IP アドレスを削除する 変更

更新されたインスタンスごとの構成を対応する VM に適用すると、更新されたステートフル項目に応じて MIG は次の処理を行います。

  • 対応するマネージド インスタンスの構成の保持状態にディスク、IP アドレス、メタデータを追加(または削除)します。
  • インスタンス テンプレート以外で定義されたディスクを VM にアタッチ(または切断)します。
  • VM に固有のメタデータの Key-Value ペアを設定(または削除)します。
  • 指定した IP アドレスを VM インスタンスに割り振り(または削除)します。

インスタンスごとの構成ファイルが対応のマネージド VM に適用されたら、インスタンスの構成の保持状態で更新の結果を確認できます。

マネージド インスタンスの保持状態

適用すると、インスタンス テンプレートとステートフル構成が各マネージド インスタンスの「保持状態」に変換されます。

マネージド インスタンスを調べることで、保存状態を確認できます。

MIG はこれらの保持状態を自動的に維持し、この状態を対応する実際の VM インスタンスに非同期で自動的に適用します。

ステートフル構成を適用して生成されたマネージド VM の状態を保持します。

保持状態は、特定のインスタンスに対してどの項目(永続ディスク、IP アドレス、メタデータ)がステートフルかを表しています。

適用されたステートフル構成から生成された保持状態。

ステートフル ポリシーに基づいて生成された保持状態は、インスタンスごとの構成に基づいて生成された保持状態とは別に保存されます。VM を再作成するときに、MIG はこの両方の状態を使用します。この場合、インスタンスごとの構成から生成された状態が優先されます。

ステートフル ポリシーに基づく保持状態

ステートフル ポリシーでは、MIG 内の各 VM インスタンスに個別に保持される項目を指定します。この項目はすべてのインスタンスに存在し、MIG のインスタンス テンプレートで定義されています。

適用されると、MIG はステートフル ポリシーをインスタンス固有の保持状態(managedInstances[].preservedStateFromPolicy)に変換し、これらの状態を自動的に維持します。

次に示す MIG では、2 つの VM インスタンスがそれぞれのステートフル ポリシーで定義されたステートフル ディスクを使用しています。この例では、インスタンスごとの構成はありません。

ステートフル ポリシーからのみ生成される保持状態。

上の図では、1 つの MIG に 2 つのインスタンスが存在しています。

  • インスタンス テンプレートにより、MIG 内のすべてのインスタンスに boot-disk というデバイス名のブートディスクと、data-disk というデバイス名のディスクが定義されています。
  • ステートフル ポリシーで、data-disk はステートフルと宣言されています。ブートディスクはステートレスのままです。data-disk というデバイス名のディスクはインスタンス テンプレートで定義されています。
  • 構成が適用されると、MIG はステートフル ポリシーを各マネージド インスタンスに固有の保持状態に変換します。MIG は、この保持状態に従って VM インスタンス node-1 にディスク data-disk-1 を保持し、インスタンス node-2 にディスク data-disk-2 を保持します。これは、ステートフル ポリシーでどちらのディスクにも data-disk というデバイス名が構成されているためです。
  • この例では、インスタンスごとの構成はありません。

インスタンスごとの構成に基づく保持状態

インスタンスごとの構成では、特定の VM で保持する項目を指定します。これらの項目は、MIG のインスタンス テンプレートに定義されている必要はありません。

適用されると、インスタンスごとの構成が、対応するインスタンスの保持状態(preservedStateFromConfig)に変換されます。

次に示す MIG には 2 つの VM インスタンスがあります。インスタンスごとに、そのステートフル メタデータとディスクがインスタンスごとの構成(PIC)に定義されています。この例にはステートフル ポリシーはありません。

PIC のみから生成された保持状態。

上の図で:

  • インスタンス テンプレートには、MIG のすべてのインスタンスに boot-disk というデバイス名のブートディスクが定義されています。このブートディスクは、MIG 内のすべての VM でステートレスです。
  • インスタンスごとの構成では、MIG 内の 2 つのインスタンス(node-1node-2)に保持する状態が定義されています。
    • node-1 インスタンスに対しては、インスタンスごとの構成で legacy-disk というデバイス名のディスク my-legacy-1 と、node-id:xyz273 というメタデータが定義されています。
    • node-2 インスタンスに対しては、インスタンスごとの構成で logs-disk というデバイス名のディスク my-logs-1 と、node-id:pqr851 というメタデータが定義されています。
  • 構成が適用されると、MIG はインスタンスごとの構成を各マネージド インスタンスの保持状態に自動的に変換します。保持状態に従い、MIG は次の接続を行い、状態を維持します。
    • VM node-1 に対する永続ディスク my-legacy-1 とメタデータ node-id:xyz273
    • VM node-2 に対する永続ディスク my-logs-1 とメタデータ node-id:pqr851
  • この例にはステートフル ポリシーがありません。

インスタンスごとの構成の保持状態にあるディスクとメタデータは、この例ではインスタンス テンプレートによって定義されないことに注意してください。代わりに、インスタンスごとの構成によってのみ定義されます。これは、インスタンスごとの構成で指定した構成が特定の VM に固有のためです。つまり、インスタンス テンプレートに存在する必要はありません。

インスタンスごとの構成はステートフル ポリシーとインスタンス テンプレートよりも優先される

1 つの MIG 内で、ステートフル ポリシーと 1 つ以上のインスタンスごとの構成の両方を構成できます。たとえば、ステートフル ポリシーで、すべてのインスタンスに存在するステートフル ディスクを定義でき、インスタンスごとの構成でインスタンス固有のメタデータを定義できます。

インスタンス テンプレートまたはステートフル ポリシーと競合した場合、マネージド インスタンスのインスタンスごとの構成が優先されます。

インスタンスごとの構成を適用して、ステートフルポリシーですでに定義されているディスクまたはネットワーク インターフェースを追加する場合、MIG は、そのディスクまたはネットワーク インターフェース用のステートフル構成を、インスタンス単位の構成のマネージド インスタンスの保存状態(preservedStateFromConfig)に保存し、ポリシーの保存状態(preservedStateFromPolicy)から競合するエントリを削除します。新しい保存状態が以前のものと異なる場合、MIG は VM を更新する必要があります。更新すると、メタデータまたは外部 IP アドレスが変更される場合があります。また、ディスクの交換が発生し、最後に保存された状態構成からディスクが切断され、新しい保持状態の構成に指定されたディスクがアタッチされることもあります。

次の例では、VM インスタンス node-1 のインスタンスごとの構成が以下を再定義します。

  • デバイス名 logs-disk のディスクの保持状態(ステートフル ポリシーで定義されたもの)
  • メタデータキー logmonth の値(インスタンス テンプレートで最初に定義されたもの)

インスタンスごとの構成から生成された構成が、ステートフル ポリシーやインスタンス テンプレートよりも優先されます。

上の図で:

  • インスタンス テンプレートでは次のことを定義しています。
    • MIG 内のすべてのインスタンスが使用する 3 つのディスク。デバイス名は boot-diskdata-disklogs-disk です。
    • すべてのインスタンスに共通のメタデータ: logmonth:jan
  • ステートフル ポリシーで、デバイス名が data-disklogs-disk のディスクをステートフルと宣言しています。ブートディスクはステートレスのままです。
  • インスタンス node-1 のインスタンスごとの構成では、次のことを再定義しています。
    • デバイス名が logs-disk のディスクを含むステートフル構成: MIG は、この情報に従って、logs-disk というデバイス名でディスク pd-logs-febnode-1 にアタッチします。
    • インスタンス テンプレートで定義されたメタデータ(キー値 logmonth:jan): MIG は、この情報に従って値 logmonth:febnode-1 に設定します。
  • 構成を適用すると、MIG はステートフル ポリシーとインスタンスごとの構成をマネージド インスタンスに保存されたインスタンス固有の状態に自動的に変換します。
    • ポリシーから生成された保持状態に従い、MIG は VM node-1 のディスク data-disk-1 を保持します。ポリシーの保持状態には、デバイス名が logs-disk のディスクのステートフル構成が含まれていないことに注意してください。この構成は、インスタンスごとの構成の logs-disk の構成によって上書きされるためです。
    • 構成から生成された保持状態に従い、MIG は永続ディスク logs-disk をアタッチして保持し、VM インスタンス node-1 のメタデータ logmonth:feb を設定して保持します。構成の保持状態は、ステートフル ポリシーの logs-disk の構成をオーバーライドし、インスタンス テンプレートのメタデータ logmonth:jan をオーバーライドします。

ステートフル ポリシーからリソースを削除した場合の保持状態への影響

ステートフル ポリシーからリソース構成を削除すると、すべてのマネージド インスタンスで対応する preservedStateFromPolicy が自動的に削除されます。コンピューティング リソースはインスタンスに接続されたままですが、ステートフルではなくなります。

次の例では、ステートフル ポリシーからディスクを削除したため、すべてのマネージド VM のポリシーからそのディスクが削除されています。これらのディスクは VM に接続されたままですが、ステートフルではなくなり、次の VM の再作成時に削除されて再作成される可能性があります。

ステートフル ポリシーからディスクを削除する。

ステートフル永続ディスクなどの同じ項目がステートフル ポリシーとインスタンスごとの構成の両方に存在しており、ステートフル ポリシーからそのステートフル構成のみを削除した場合、MIG はインスタンスごとの構成から削除しません。対応する VM で構成されたリソースはステートフルのままです。

次の例では、ステートフル ポリシーからディスクを削除しても、インスタンスごとの構成からディスクは削除されません。ディスクは構成から生成された保持状態の一部であるため、ステートフルのままです。

インスタンスごとの構成が存在する場合、ステートフル ポリシーからディスクを削除します。

インスタンスごとの構成からアイテムを削除した場合の保持状態への影響

インスタンスごとの構成からステートフル構成を削除して変更を適用すると、MIG は対応するマネージド インスタンスの構成(preservedStateFromConfig)の保持状態からステートフル構成を自動的に削除します。保持状態の一部ではなくなったコンピューティング リソースはステートレスになります。

インスタンスごとの構成からステートフル ディスク構成を削除した場合の保持状態への影響

インスタンスごとの構成からステートフル ディスクを削除して、関連する VM インスタンスに変更を適用すると、MIG は次の処理を行います。

  • インスタンスの構成の保持状態からディスク構成を削除します。
  • 同じデバイス名のディスクがインスタンス テンプレートで定義されていても、ステートフル ポリシーで構成されていない場合、ディスクは指定された VM にアタッチされたままになります。ただし、指定された VM のディスクはステートレスになり、次の VM の再作成、自動修復または更新イベントでインスタンス テンプレートの構成に従って再作成される可能性があります。
  • 同じデバイス名のディスクがインスタンス テンプレートで定義されていない場合、自動削除構成に関係なく、更新されたインスタンスごとの構成が関連付けられた VM に適用されるとすぐに、VM から自動的に切り離されます。
  • ステートフル ポリシーで同じデバイス名のディスクが構成されている場合、そのステートフル ポリシー構成が、特定のマネージド インスタンスのポリシーから生成された保持状態に変換されます。

次の例では、node-1 のインスタンスごとの構成から青色のディスクと緑色のディスクを削除すると、node-1 マネージド インスタンスの保持状態から両方のディスクが削除されています。

  • 青色のディスクは node-1 VM インスタンスにアタッチされたままですが、ステートレスになります。このディスクは、次の VM の再作成時にインスタンス テンプレートの構成に従って再作成できます。
  • インスタンス テンプレートに同じデバイス名のディスクが定義されていないため、緑色のディスクはnode-1 VM インスタンスから切断されます。

インスタンスごとの構成からディスクを削除します。

インスタンスごとの構成からステートフル メタデータを削除した場合の保持状態への影響

インスタンスごとの構成からステートフル メタデータを削除して変更を適用するとすぐに、MIG は対応するマネージド インスタンスの保持状態からそのステートフル メタデータを削除します。

  • インスタンス テンプレートで同じキーのメタデータが定義されている場合、MIG はインスタンス テンプレートの値をすぐにインスタンスに適用します。
  • 同じキーのメタデータがインスタンス テンプレートで定義されていない場合、MIG はすぐにインスタンスからキー値を削除します。

次の例では、mode:devid:xyz273 メタデータを node-1 のインスタンス単位構成から削除すると、構成から node-1 のマネージド インスタンスの保持状態から Key-Value ペア両方のログが自動的に削除されます。

  • mode:dev は、VM のインスタンス テンプレートの mode:test に置き換えられます。
  • インスタンス テンプレートに同じキー id のメタデータがないため、id:xyz273 は直ちに VM から削除されます。

インスタンスごとの構成からメタデータを削除します。

インスタンスごとの構成からステートフル IP 構成を削除した場合の保持状態への影響

インスタンスごとの構成から内部 IP 構成を削除すると、この VM の IP アドレスがステートレスになります。この VM では自動変更は行われませんが、IP アドレスは、VM の再作成、更新、自動修復後に変更される可能性があります。

ステートフル ポリシーへのフォールバック

インスタンスごとの構成ファイルからリソースのステートフル構成を削除し、ステートフル ポリシーで同じリソースを構成した場合、リソースはステートフル ポリシーに従ってステートフルのままになります。

MIG は、項目のステートフル構成を preservedStateFromConfig から自動的に削除し、対応するマネージド インスタンスの preservedStateFromPolicy に追加します。

次の例では、node-1 のインスタンスごとの構成からディスクを削除しても、ステートフル ポリシーからディスクは削除されません。ディスクはステートフル ポリシーに従ってステートフルのままです。

  • MIG は、node-1 マネージド インスタンスの preserveStateFromConfig からディスクを自動的に削除します。これは、ディスクがインスタンスごとの構成に含まれていないためです。
  • ステートフル ポリシー構成がまだ存在し、node-1 のインスタンスごとの構成と競合していないため、MIG は node-1 マネージド インスタンスの preserveStateFromPolicy にディスクを自動的に追加します。

インスタンスごとの構成からディスクを削除しますが、ステートフル ポリシーからは削除しません。

フィードバック

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

次のステップ