有狀態的 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 卸離 重新整理
新增中繼資料鍵/值組合 重新整理
移除中繼資料鍵/值組合 重新整理
新增非透過執行個體範本建立的磁碟,並將磁碟連接至 VM 取代
移除未透過執行個體範本建立的外部開機磁碟,將其從 VM 中卸載,然後改為透過執行個體範本建立開機磁碟 取代
設定內部 IP 位址 取代
移除內部 IP 位址 取代

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

  • 將磁碟、IP 位址或中繼資料新增 (或移除) 至對應管理執行個體的保留設定狀態
  • 將未在執行個體範本中定義的磁碟連結 (或卸離) 至 VM。
  • 設定 (或移除) 特定於 VM 的中繼資料鍵/值組合。
  • 將指定的 IP 位址指派 (或移除) 至 VM 執行個體。

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

保留的代管執行個體狀態

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

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

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

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

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

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

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

根據有狀態政策保留狀態

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

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

以下範例顯示 MIG 包含兩個 VM 執行個體,這些執行個體會使用狀態式政策中定義的狀態式磁碟,該政策會套用至每個執行個體。這個範例中沒有個別執行個體設定。

僅保留由有狀態政策產生的狀態。

上圖顯示具有兩個執行個體的 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 附加至 logs-disk 裝置名稱下的 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 會自動移除所有受管理執行個體的對應 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 會立即從執行個體中移除該鍵值。

在以下範例中,從 node-1 的個別執行個體設定中移除 mode:devid:xyz273 中繼資料,會導致系統自動從 node-1 管理的執行個體保留狀態中,從設定中移除這兩個鍵/值組合。

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

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

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

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

改用有狀態政策

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

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

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

  • 由於磁碟不再是個別執行個體設定的一部分,因此 MIG 會自動從 node-1 管理執行個體的 preserveStateFromConfig 中移除磁碟。
  • 由於有狀態政策設定仍在運作,且不再與 node-1 個別執行個體設定相衝突,因此 MIG 會自動將磁碟新增至 node-1 代管執行個體的 preserveStateFromPolicy

從個別執行個體設定移除磁碟,但不從有狀態政策移除。

意見回饋

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

後續步驟