關於修復 VM 以確保高可用性

本文說明代管執行個體群組 (MIG) 如何修復群組中失敗和不正常的 VM,確保應用程式的高可用性。

MIG 會主動維護群組中運作中的 VM 數量,確保應用程式正常運作且可用。如果群組中的 VM 停止運作,MIG 會以以下方式重新建立 VM,修復 VM,讓 VM 恢復運作:

  • 自動修復故障的 VM:如果 VM 故障或因 MIG 未啟動的動作而遭刪除,MIG 會自動修復故障的 VM。請參閱本文「自動修復失敗的 VM」一節。
  • 根據應用程式健康狀態檢查結果修復 VM:您可以選擇修復健康狀態不良的 VM,進一步提升高可用性。如果您設定以應用程式為準的健康狀態檢查,且應用程式未通過健康狀態檢查,MIG 就會將該 VM 標示為健康狀態不良並進行修復。根據應用程式健康狀態檢查結果修復 VM 也稱為自動修復。請參閱本文「根據應用程式健康狀態檢查結果修復 VM」一節。

自動修復失敗的 VM

如果 MIG 中的 VM 發生故障,MIG 會自動重新建立該 VM,藉此修復故障的 VM。VM 可能會因下列原因而失敗:

如果 MIG 刻意停止 VM (例如自動調度器刪除 VM 時),MIG 就不會修復該 VM。

根據應用程式健康狀態檢查修復 VM

除了自動修復失敗的 VM 之外,如果 VM 上執行的應用程式停止運作、當機或記憶體耗盡,您可能也想修復 VM。如要確保應用程式回應正常,可以設定以應用程式為基礎的健康狀態檢查。

以應用程式為準的健康狀態檢查會定期確認,您在 MIG 中每個 VM 上執行的應用程式是否能正常回應。如果 VM 上的應用程式沒有回應,MIG 就會將該 VM 標為健康狀態不良。MIG 接著會修復健康狀態不良的 VM。根據應用程式健康狀態檢查結果修復 VM 的程序稱為自動修復。

為確保 MIG 持續執行部分 VM,群組絕不會同時自動修復所有 VM。這種做法有助於避免發生問題,例如健康狀態檢查錯誤觸發不必要的修復作業、防火牆規則設定有誤導致健康狀態檢查無法探測 VM,或是網路連線或基礎架構問題導致健康狀態良好的 VM 遭到誤判為健康狀態不良。不過,如果區域 MIG 只有一個 VM,或區域 MIG 中的每個區域只有一個 VM,MIG 會在這些 VM 變為健康狀態不良時自動修復。

自動修復政策

每個 MIG 都有自動修復政策,您可以在其中設定健康狀態檢查,以及設定初始延遲時間。初始延遲時間是指新 VM 初始化及執行開機指令碼所需的時間。當 MIG 將 VM 的 currentAction 欄位變更為 VERIFYING 時,初始延遲計時器會啟動。在 VM 的初始延遲期間,MIG 會忽略未通過的健康狀態檢查,因為 VM 可能正在啟動程序中。這種做法可避免 MIG 過早重新建立 VM。如果在初始延遲期間,健康狀態檢查收到健康狀態良好的回應,表示啟動程序已完成,VM 已準備就緒。

如要進一步瞭解如何設定自動修復政策,請參閱設定應用程式健康狀態檢查和自動修復

監控應用程式健康狀態變化

如果您在 MIG 中設定了以應用程式為準的健康狀態檢查,可以檢查 MIG 中每個 VM 的健康狀態。詳情請參閱檢查 VM 是否正常運作

您也可以監控 VM 健康狀態的變化。 詳情請參閱「監控健康狀態變化」。

定價

設定以應用程式為基礎的健康狀態檢查時,Compute Engine 預設會在代管執行個體的健康狀態變更時,寫入記錄項目。 Cloud Logging 每個月都會提供免費配額,超過配額後,系統會依據資料量計費。如要避免產生費用,可以停用健康狀態變更記錄。

維修期間的行為

以下各節說明自動修復和根據應用程式健康狀態檢查進行修復時的行為。

維修進度更新

根據預設,在修復期間,MIG 會使用用來建立 VM 的原始執行個體範本,重新建立 VM。舉例來說,如果 VM 是使用 instance-template-a 建立,然後您將 MIG 更新為在 OPPORTUNISTIC 模式下使用 instance-template-b,則 MIG 仍會使用 instance-template-a 重新建立 VM。

如要讓 MIG 在修復 VM 時使用最新的執行個體範本和個別執行個體適用的設定,可以將群組設定為在修復期間套用設定更新

在替代可用區修復 VM

根據預設,區域 MIG 會在原始可用區重新建立 VM,藉此修復失敗或狀況不良的 VM。您可以設定區域 MIG,在 MIG 的任何選定可用區中修復 VM。 如果 MIG 無法在原始可用區修復 VM,就會根據可用容量和配額選取替代可用區,並在該可用區重新建立 VM。

如果 MIG 在與原始可用區不同的可用區修復 VM,VM 的網址就會變更,因為網址包含可用區,例如 projects/example-project/zones/us-central1-b/instances/example-mig-0289gx

在替代可用區修復 VM 的好處如下:

  • 讓應用程式更能抵禦區域性故障。

  • 提高資源取得率,特別是 GPU、具有大量核心或記憶體的 VM,或是 Spot VM 等高需求硬體。

詳情請參閱在替代可用區修復 VM

磁碟處理

在修復期間,根據範本重新建立 VM 時,MIG 會以不同的方式處理不同類型的磁碟。一些磁碟設定可能會導致修復作業在嘗試重新建立 VM 時失敗。

磁碟類型 autodelete 維修期間的行為
新永久磁碟 true 系統會如執行個體範本所指定,重新建立磁碟。重新建立磁碟及其 VM 時,寫入該磁碟的任何資料都會遺失。
新永久磁碟 false 在 MIG 重新建立 VM 時,系統會保留並重新連結磁碟。
現有的永久磁碟 true 舊磁碟會遭到刪除。VM 重新建立作業會失敗,因為 Compute Engine 無法將刪除的磁碟重新連結到 VM。但是,針對現有讀寫磁碟,代管執行個體群組最多只能擁有一個 VM,因為在讀寫模式下,單一永久磁碟無法連結至多個 VM。
現有的永久磁碟 false 系統會如執行個體範本所指定,重新連結舊磁碟。磁碟中的資料會保留。但是,針對現有讀寫磁碟,代管執行個體群組最多只能擁有一個 VM,因為在讀寫模式下,單一永久磁碟無法連結至多個 VM。
新的本機 SSD 不適用 系統會如執行個體範本所指定,重新建立磁碟。重新建立或刪除 VM 時,本機 SSD 中的資料會遺失。

MIG 不會重新連結未在執行個體範本或每個執行個體設定中指定的磁碟,例如建立 VM 之後您手動連結至 VM 的磁碟。

如要保留寫入磁碟的重要資料,請採取預防措施,例如:

如果 VM 有您要保留的重要設定,Google 也建議您在執行個體範本中使用自訂映像檔。自訂映像檔包含您需要的任何自訂設定。當您在執行個體範本中指定自訂映像檔時,MIG 會使用自訂映像檔 (其中含有您所需要的自訂設定項目) 來重新建立 VM。

關閉修復功能

您可以關閉 MIG 自動執行的修復作業。在 MIG 中關閉修復功能後,系統會停用失敗 VM 的修復作業,以及根據應用程式健康狀態檢查進行的修復作業。您也可以單獨關閉根據應用程式健康狀態檢查進行的修復作業。

在下列情況中,您可能需要關閉 MIG 中的修復功能:

  • 調查或偵錯失敗的 VM,避免自動修復作業中斷。
  • 手動修復 VM 或實作自己的修復邏輯。
  • 防止在批次工作進行期間重新建立 VM。
  • 觀察應用程式健康狀態,但不修復健康狀態不良的 VM。
  • 微調健康狀態檢查設定,避免意外觸發修復作業。

關閉修復功能後,如果群組中的 VM 故障或健康狀態不良,MIG 就不會採取任何動作。失敗和健康狀態不良的 VM 會繼續留在群組中,且 MIG 中執行的 VM 目標數量 (targetSize) 維持不變。不過,如果您已設定 VM 的時間限制,當失敗和不良健康狀態的 VM 達到該時間限制時,MIG 會自動刪除這些 VM,且 targetSize 會減少。

如果 MIG 的更新類型設為 proactive,且有新的執行個體範本可用,MIG 就會使用新的範本重新建立失敗和不正常的 VM,藉此更新這些 VM。如不想更新失敗和不正常的 VM,請將更新類型設為 opportunistic

如果您已設定以應用程式為準的健康狀態檢查,關閉修復功能不會影響健康狀態檢查的運作。健康狀態檢查會持續探測應用程式,並提供 VM 健康狀態。這項設定可讓您監控應用程式健康狀態,同時防止 MIG 修復健康狀態不良的 VM。

如果 MIG 是負載平衡器的後端服務之一,且您在 MIG 中關閉修復功能,則任何未修復的失敗和健康狀態不良 VM 都不會回應負載平衡器健康狀態檢查。如果 MIG 中失敗或健康狀態不良的 VM 數量增加,負載平衡器可能會減少導向該 MIG 的流量,或切換至另一個後端 (如有設定)。失敗的 VM 恢復運作後,負載平衡器就會繼續將流量導向 MIG。

詳情請參閱「在 MIG 中停用修復作業」。

後續步驟