有狀態的 MIG 如何運作

有狀態的代管執行個體群組 (有狀態的 MIG) 會在機器重新啟動、重新建立、自動修復或更新時,保留每個虛擬機器 (VM) 執行個體的專屬狀態,包括 VM 名稱、連接的永久磁碟、IP 位址和/或中繼資料。

本頁說明有狀態 MIG 的運作方式。如要瞭解如何設定有狀態的 MIG,請參閱「設定有狀態的 MIG」。

有狀態 MIG 的運作方式總覽

如果您已建立有狀態的設定,系統就會將 MIG 視為有狀態。

您可以設定非空白的狀態政策,和/或一或多個非空白的執行個體設定,建立有狀態的設定

您或 MIG 套用設定後,設定就會生效:

  • MIG 會自動將有狀態政策設定套用至新執行個體和現有執行個體。
  • 建立或更新每個執行個體的設定時,您可以選擇手動套用新設定,或讓系統自動套用。

套用具狀態設定 (具狀態政策和/或每個執行個體的設定) 後,您可以檢查每個代管執行個體的保留狀態驗證設定是否正確。

後續對 MIG 的有狀態設定或大小所做的變更 (例如縮減 MIG 大小,或從 MIG 刪除或捨棄執行個體),可能會影響執行個體的保留狀態

有狀態設定如何套用至代管執行個體

您或 MIG 套用有狀態設定後,該設定就會生效。 將有狀態的設定套用至 MIG 的執行個體,取決於設定:

  • 有狀態政策:MIG 會自動將有狀態政策設定套用至新執行個體和現有執行個體。
  • 每個執行個體的設定:建立或更新每個執行個體的設定時,您可以選擇手動套用新設定,或讓系統自動套用。

將有狀態設定套用至代管執行個體。

如何將具狀態政策更新套用至執行個體

建立或更新具狀態政策時 (例如新增或移除具狀態磁碟),MIG 會自動將具狀態政策設定套用至群組中的所有代管執行個體,並以非同步方式執行。此外,MIG 也會在建立新執行個體時,自動將有狀態政策設定套用至這些執行個體,例如在 MIG 大小增加時,或您在 MIG 中手動建立執行個體時。

套用設定後,您可以在每個受管理執行個體的「保留的政策狀態」中,查看更新的影響。

更新有狀態政策不會中斷執行中的 VM。

更新有狀態政策以新增有狀態磁碟時,MIG 會更新每個 VM 資源,並變更磁碟的 autoDelete 旗標值 (instances.disks[].autoDelete):

  • 對於您設為有狀態的磁碟,MIG 會將 autoDelete 設為 FALSE。這樣可防止系統在執行個體重新建立時刪除該磁碟 (透過自動修復、更新或手動重新建立)。
  • MIG 會將 autoDelete 設為符合執行個體範本設定 (instanceTemplates.disks[].autoDelete),以確保所有磁碟都是無狀態。

變更 autoDelete 標記的值不會中斷執行中的 VM。

如何將個別執行個體設定更新套用至執行個體

建立或更新每個執行個體的設定時,您可以選擇手動或自動套用新設定。詳情請參閱「從每個執行個體的設定套用具狀態的設定」。

下表顯示將不同執行個體專屬設定更新套用至 VM 時,所需的中斷程度

個別執行個體設定更新 必須中斷 VM 才能套用
將執行個體範本定義的磁碟設定為有狀態 (新增至每個執行個體設定) 重新整理
將執行個體範本定義的磁碟設為無狀態 (從每個執行個體的設定中移除) 重新整理
新增執行個體範本未定義的磁碟,並將其連結至 VM 重新整理
移除執行個體範本未定義的磁碟,並從 VM 卸離該磁碟 重新整理
新增中繼資料鍵/值組合 重新整理
移除中繼資料鍵/值組合 重新整理
新增並連結未透過執行個體範本建立的外部開機磁碟 取代
移除並卸載並非透過執行個體範本建立的外部開機磁碟,然後改用執行個體範本建立開機磁碟 取代
設定內部 IP 位址 取代
移除內部 IP 位址 取代

將更新的個別執行個體設定套用至對應的 VM 時,MIG 會根據更新的有狀態項目執行下列動作:

  • 在對應的代管執行個體中,將磁碟、IP 位址或中繼資料新增 (或移除) 至從設定保留的狀態
  • 將執行個體範本未定義的磁碟附加 (或卸離) 至 VM。
  • 設定 (或移除) VM 專屬的中繼資料鍵/值組合。
  • 將指定 IP 位址指派 (或移除) 給 VM 執行個體。

將個別執行個體設定套用至對應的受管理 VM 後,您可以在執行個體的設定保留狀態中,查看更新效果。

代管執行個體的保留狀態

套用後,MIG 會將執行個體範本和具狀態設定轉換為每個代管執行個體的「保留狀態」。

您可以檢查代管執行個體,查看保留的狀態

MIG 會自動維護這些保留狀態,並自動將這些狀態非同步套用至 MIG 中每個對應的實際 VM 執行個體。

套用有狀態設定後產生的受管理 VM 保留狀態。

保留狀態會說明特定執行個體有哪些有狀態的個別項目 (永久磁碟、IP 位址、中繼資料):

從套用的有狀態設定產生保留狀態。

根據有狀態政策產生的保留狀態,會與根據每個執行個體設定產生的保留狀態分開儲存。重新建立 VM 時,MIG 會合併這兩者,並優先採用執行個體設定中保留的狀態。

根據有狀態政策保留狀態

有狀態政策會指定所有執行個體中存在,且在 MIG 執行個體範本中定義的項目,以便為 MIG 中的每個 VM 執行個體個別保留這些項目。

套用後,MIG 會將有狀態政策轉換為特定於執行個體的保留狀態 (managedInstances[].preservedStateFromPolicy)。MIG 會自動維護這些保留狀態。

以下範例顯示具有兩個 VM 執行個體的 MIG,這些執行個體使用狀態政策中定義的狀態磁碟,該政策適用於每個執行個體。本範例沒有執行個體專屬設定。

保留狀態只能從具狀態的政策產生。

上圖顯示具有兩個執行個體的 MIG:

  • 執行個體範本會為 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 的執行個體範本中定義。

套用後,MIG 會將每個執行個體設定轉換為對應執行個體的保留狀態 (preservedStateFromConfig)。

以下範例顯示具有兩個 VM 執行個體的 MIG,其中每個執行個體的狀態中繼資料和磁碟,都是在執行個體專屬設定 (PIC) 中定義。本例中沒有具狀態的政策。

僅從 PIC 產生的保留狀態。

在上圖中:

  • 執行個體範本會為 MIG 中的所有執行個體定義裝置名稱為 boot-disk 的開機磁碟。MIG 中所有 VM 的開機磁碟都是無狀態。
  • 每個執行個體的設定會定義 MIG 中兩個執行個體 (node-1node-2) 要保留的狀態。
    • node-1 執行個體為例,每個執行個體的設定會定義磁碟 my-legacy-1,其中包含裝置名稱 legacy-disk 和中繼資料 node-id:xyz273
    • node-2 執行個體為例,每個執行個體的設定會定義磁碟 my-logs-1,其中包含裝置名稱 logs-disk 和中繼資料 node-id:pqr851
  • 套用設定後,MIG 會自動將每個執行個體的設定轉換為每個代管執行個體的保留狀態。保留的狀態會指示 MIG 附加並保留下列項目:
    • VM node-1 的永久磁碟 my-legacy-1 和中繼資料 node-id:xyz273
    • VM node-2 的永久磁碟 my-logs-1 和中繼資料 node-id:pqr851
  • 這個範例沒有具狀態的政策。

請注意,本範例中,執行個體範本不會定義從個別執行個體設定保留的磁碟和中繼資料狀態,而是只由個別執行個體設定定義。這是因為您在每個執行個體設定中指定的設定是特定 VM 專屬的設定,因此不一定要出現在執行個體範本中。

每個執行個體的設定優先於有狀態政策和執行個體範本

您可以在一個 MIG 中設定有狀態政策,以及一或多個例項設定。舉例來說,在有狀態政策中,您可以定義所有執行個體都有的有狀態磁碟,並在每個執行個體設定中定義執行個體專屬的中繼資料。

如果代管執行個體的個別執行個體設定與執行個體範本或有狀態政策中的設定衝突,系統會優先採用個別執行個體設定。

如果您套用每個執行個體設定,新增狀態政策中已定義的磁碟或網路介面,則 MIG 會將該磁碟或網路介面的狀態設定儲存在受管理執行個體的每個執行個體設定保留狀態 (preservedStateFromConfig) 中,並從政策保留狀態 (preservedStateFromPolicy) 中移除衝突項目。如果新的保留狀態與先前的狀態不同,MIG 必須重新整理 VM。重新整理可能會導致中繼資料變更、外部 IP 位址變更,或是磁碟交換,以從上次保留的狀態設定中分離磁碟,並附加新保留狀態設定中指定的磁碟。

在以下範例中,VM 執行個體 node-1 的個別執行個體設定會重新定義:

  • 裝置名稱為 logs-disk 的磁碟保留狀態, 最初是在具狀態政策中定義
  • 中繼資料鍵 logmonth 的值,最初是在執行個體範本中定義。

來自每個執行個體設定的設定,優先於有狀態政策和執行個體範本。

在上圖中:

  • 執行個體範本定義:
    • MIG 中所有執行個體的三個磁碟,裝置名稱為 boot-diskdata-disklogs-disk
    • 所有執行個體共用的中繼資料:logmonth:jan
  • 有狀態政策會宣告裝置名稱為 data-disklogs-disk 的磁碟是有狀態,開機磁碟則維持無狀態。
  • 執行個體 node-1 的個別執行個體設定會重新定義:
    • 裝置名稱為 logs-disk 的磁碟有狀態設定:這會指示 MIG 將磁碟 pd-logs-feb 附加至 node-1,並使用 logs-disk 裝置名稱。
    • 在執行個體範本中定義的中繼資料,且鍵值為 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 中繼資料。

從有狀態政策中移除資源對保留狀態的影響

如果從具狀態政策中移除資源設定,系統會自動為所有受管理執行個體移除對應的 preservedStateFromPolicy。運算資源仍會附加至執行個體,但不再具有狀態。

在下列範例中,從具狀態政策移除磁碟,會導致所有代管 VM 中政策的保留狀態移除該磁碟。這些磁碟仍會附加至 VM,但不再具有狀態,且可能會在下次重新建立 VM 時刪除並重新建立。

從具狀態政策中移除磁碟。

舉例來說,如果狀態保留政策和每個執行個體設定中都有相同的項目 (例如具備狀態的永久磁碟),且您只從狀態保留政策中移除該項目的狀態保留設定,MIG 就不會從每個執行個體設定中移除該項目。對應的 VM 會保留設定的資源狀態。

在下列範例中,從具狀態政策移除磁碟不會導致從每個執行個體設定中移除磁碟。磁碟仍會保留狀態,因為它仍是設定中保留狀態的一部分。

如果也存在每個執行個體的設定,從具狀態政策中移除磁碟。

從每個執行個體設定中移除項目對保留狀態的影響

如果您從每個執行個體設定中移除有狀態設定,並套用變更,MIG 會自動從相應受管理執行個體中,移除設定保留狀態 (preservedStateFromConfig) 的有狀態設定。不再屬於任何保留狀態的運算資源會變成無狀態。

從每個執行個體設定中移除有狀態磁碟設定,對保留狀態的影響

如果您從每個執行個體設定中移除具狀態磁碟,並將變更套用至相關聯的 VM 執行個體,MIG 會執行下列操作:

  • 磁碟設定會從執行個體的設定保留狀態中移除。
  • 如果執行個體範本中定義了具有相同裝置名稱的磁碟,但未在具狀態政策中設定,則該磁碟會繼續附加至指定 VM。不過,該磁碟會變成指定 VM 的無狀態磁碟,並在下一次 VM 重新建立、自動修復或更新事件時,根據執行個體範本設定重新建立。
  • 如果執行個體範本中未定義具有相同裝置名稱的磁碟,系統就會在將更新後的執行個體設定套用至相關聯的 VM 時,立即自動從 VM 中卸離該磁碟,無論其自動刪除設定為何。
  • 如果狀態型政策中設定了裝置名稱相同的磁碟,則該磁碟的狀態型政策設定會轉換為指定代管執行個體的「preserved state from policy」(政策保留狀態),且磁碟會維持狀態型。

在下列範例中,從 node-1 的每個執行個體設定中移除藍色和綠色磁碟,會導致從設定中移除 node-1 受管理執行個體保留的狀態。

  • 藍色磁碟仍會附加至 node-1 VM 執行個體,但現在處於無狀態模式,下次重新建立 VM 時,系統會根據執行個體範本設定重新建立該磁碟。
  • 由於執行個體範本未定義具有相同裝置名稱的磁碟,因此綠色磁碟會從 node-1 VM 執行個體卸離。

從每個執行個體設定中移除磁碟。

從每個執行個體設定中移除有狀態中繼資料,對保留狀態的影響

從每個執行個體設定中移除有狀態中繼資料並套用變更後,MIG 會立即從對應受管理執行個體的保留狀態中移除該有狀態中繼資料:

  • 如果您在執行個體範本中定義了具有相同鍵的中繼資料,MIG 會立即將執行個體範本中的值套用至執行個體。
  • 如果執行個體範本中未定義具有相同鍵的中繼資料,MIG 會立即從執行個體中移除鍵值。

在下列範例中,從 node-1 的每個執行個體設定中移除 mode:devid:xyz273 中繼資料,會導致系統自動從 node-1 代管執行個體的保留狀態中,移除這兩個鍵值配對。

  • mode:dev 會由 VM 中的執行個體範本 mode:test 取代。
  • 系統會立即從 VM 中移除 id:xyz273,因為執行個體範本沒有具有相同鍵 id 的中繼資料可供取代。

從每個執行個體設定中移除中繼資料。

從每個執行個體設定中移除有狀態 IP 設定,對保留狀態的影響

從每個執行個體設定中移除內部 IP 設定,會使這個 VM 的 IP 位址成為無狀態。系統不會對這個 VM 執行自動變更,但 VM 重新建立、更新或自動修復後,IP 位址可能會變更。

改用有狀態政策

如果您從每個執行個體的設定中移除資源的有狀態設定,並在有狀態的政策中設定相同資源,則資源會根據有狀態的政策維持有狀態。

MIG 會自動從 preservedStateFromConfig 移除項目的具狀態設定,並新增至對應代管執行個體的 preservedStateFromPolicy

在下列範例中,從 node-1 的每個執行個體設定中移除磁碟,不會導致磁碟從具狀態政策中移除。磁碟會根據有狀態政策維持有狀態:

  • 由於磁碟不再屬於每個執行個體的設定,MIG 會自動從 preserveStateFromConfig 中移除 node-1 受管理執行個體的磁碟。
  • 由於有狀態政策設定仍存在,且不再與每個執行個體的 node-1 設定衝突,因此 MIG 會自動將磁碟新增至preserveStateFromPolicy受管理執行個體的 node-1

從每個執行個體設定中移除磁碟,但不要從具備狀態政策中移除。

意見回饋

我們想要瞭解您的用途、難題和有狀態 MIG 的相關意見。請前往以下網址,並與我們的團隊分享您的寶貴意見:mig-discuss@google.com

後續步驟