ステートフル マネージド インスタンス グループ(ステートフル MIG)は、マシンの再起動、再作成、自動修復、更新が行われるときに、VM 名、アタッチしている永続ディスク、IP アドレス、メタデータなど、各仮想マシン(VM)インスタンスの一意の状態を保持します。
このページでは、ステートフル MIG の仕組みについて説明します。ステートフル MIG の設定方法については、ステートフル MIG の構成をご覧ください。
ステートフル MIG の仕組みの概要
ステートフル構成を作成した場合、MIG はステートフルとみなされます。
空でないステートフル ポリシーや、1 つ以上のインスタンスごとの空でない構成を設定することで、ステートフル構成を作成します。
- ステートフル ポリシーでは、MIG のすべてのインスタンスで保持する項目を定義します。
- インスタンスごとの構成では、特定の VM インスタンスに対して保持する項目を定義します。
この構成は、ユーザーまたは MIG が適用した後に有効になります。
- MIG は、新しいインスタンスと既存のインスタンスにステートフル ポリシーの構成を自動的に適用します。
- インスタンスごとの構成を作成または更新するときに、新しい構成を手動で適用するか、自動的に適用するかを選択できます。
ステートフル構成(ステートフル ポリシーまたはインスタンスごとの構成)が適用されたら、各マネージド インスタンスの保持状態を調べて構成を検証できます。
MIG のステートフル構成またはサイズに対する以降の変更(たとえば、MIG のサイズの縮小、MIG からのインスタンスの削除または破棄などの変更)は、インスタンスについて維持される状態に影響します。
マネージド インスタンスにステートフル構成を適用する方法
ステートフル構成は、ユーザーまたは MIG が適用した後に有効になります。MIG のインスタンスにステートフル構成を適用する方法は、構成によって異なります。
- ステートフル ポリシー: MIG は、新規および既存のインスタンスにステートフル ポリシー構成を自動的に適用します。
- インスタンスごとの構成: インスタンスごとの構成を作成または更新するときに、新しい構成を手動で適用するか、自動的に適用するかを選択できます。
インスタンスにステートフル ポリシーの更新を適用する方法
ステートフル ディスクの追加や削除を行うステートフル ポリシーを作成または更新すると、MIG はステートフル ポリシー構成をグループ内のすべてのマネージド インスタンスに自動的かつ非同期に適用します。たとえば、MIG のサイズが増えた場合や MIG に手動でインスタンスを作成した場合、MIG はインスタンスの作成時にステートフル ポリシー構成を新しいインスタンスに自動的に適用します。
構成が適用されると、各マネージド インスタンスの保持状態をポリシーで調べることで、更新の効果を確認できます。
ステートフル ポリシーを更新しても、実行中の VM は中断されません。
ステートフル ポリシーを更新してステートフル ディスクを追加すると、MIG は各 VM のリソースを更新し、ディスクの autoDelete
フラグ(instances.disks[].autoDelete
)の値を変更します。
- MIG は、ステートフルとして構成したディスクの
autoDelete
をFALSE
に設定します。これにより、自動修復、更新、手動再作成でインスタンスが再作成されるときに、ディスクの削除を防ぐことができます。 - 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 インスタンスに非同期で自動的に適用します。
保持状態は、特定のインスタンスに対してどの項目(永続ディスク、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)に定義されています。この例にはステートフル ポリシーはありません。
上の図で:
- インスタンス テンプレートには、MIG のすべてのインスタンスに
boot-disk
というデバイス名のブートディスクが定義されています。このブートディスクは、MIG 内のすべての VM でステートレスです。 - インスタンスごとの構成では、MIG 内の 2 つのインスタンス(
node-1
とnode-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
- この例にはステートフル ポリシーがありません。
インスタンスごとの構成の保持状態にあるディスクとメタデータは、この例ではインスタンス テンプレートによって定義されないことに注意してください。代わりに、インスタンスごとの構成によってのみ定義されます。これは、インスタンスごとの構成で指定した構成が特定の VM に固有のためです。つまり、インスタンス テンプレートに存在する必要はありません。
インスタンスごとの構成はステートフル ポリシーとインスタンス テンプレートよりも優先される
1 つの MIG 内で、ステートフル ポリシーと 1 つ以上のインスタンスごとの構成の両方を構成できます。たとえば、ステートフル ポリシーで、すべてのインスタンスに存在するステートフル ディスクを定義でき、インスタンスごとの構成でインスタンス固有のメタデータを定義できます。
インスタンス テンプレートまたはステートフル ポリシーと競合した場合、マネージド インスタンスのインスタンスごとの構成が優先されます。
インスタンスごとの構成を適用して、ステートフルポリシーですでに定義されているディスクまたはネットワーク インターフェースを追加する場合、MIG は、そのディスクまたはネットワーク インターフェース用のステートフル構成を、インスタンス単位の構成のマネージド インスタンスの保存状態(preservedStateFromConfig
)に保存し、ポリシーの保存状態(preservedStateFromPolicy)から競合するエントリを削除します。新しい保存状態が以前のものと異なる場合、MIG は VM を更新する必要があります。更新すると、メタデータまたは外部 IP アドレスが変更される場合があります。また、ディスクの交換が発生し、最後に保存された状態構成からディスクが切断され、新しい保持状態の構成に指定されたディスクがアタッチされることもあります。
次の例では、VM インスタンス node-1
のインスタンスごとの構成が以下を再定義します。
- デバイス名
logs-disk
のディスクの保持状態(ステートフル ポリシーで定義されたもの) - メタデータキー
logmonth
の値(インスタンス テンプレートで最初に定義されたもの)
上の図で:
- インスタンス テンプレートでは次のことを定義しています。
- MIG 内のすべてのインスタンスが使用する 3 つのディスク。デバイス名は
boot-disk
、data-disk
、logs-disk
です。 - すべてのインスタンスに共通のメタデータ:
logmonth:jan
- MIG 内のすべてのインスタンスが使用する 3 つのディスク。デバイス名は
- ステートフル ポリシーで、デバイス名が
data-disk
とlogs-disk
のディスクをステートフルと宣言しています。ブートディスクはステートレスのままです。 - インスタンス
node-1
のインスタンスごとの構成では、次のことを再定義しています。- デバイス名が
logs-disk
のディスクを含むステートフル構成: MIG は、この情報に従って、logs-disk
というデバイス名でディスクpd-logs-feb
をnode-1
にアタッチします。 - インスタンス テンプレートで定義されたメタデータ(キー値
logmonth:jan
): MIG は、この情報に従って値logmonth:feb
をnode-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
をオーバーライドします。
- ポリシーから生成された保持状態に従い、MIG は VM
ステートフル ポリシーからリソースを削除した場合の保持状態への影響
ステートフル ポリシーからリソース構成を削除すると、すべてのマネージド インスタンスで対応する 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:dev
と id: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 にフィードバックをお寄せください。
次のステップ
- さまざまな構成と MIG アクションが保持状態に与える影響を確認する。
- マネージド インスタンスでインスタンス名、永続ディスク、メタデータを保持し、ステートフル ワークロードをサポートする方法を確認する。ステートフル MIG の構成をご覧ください。
- ステートフル MIG を使用する場合を確認する。
- 既存のワークロードをステートフル MIG に移行する方法を確認する。
- MIG の詳細を学習する。
- マネージド インスタンスを操作する。