本文說明如何關閉代管執行個體群組 (MIG) 中故障和異常 VM 的修復功能,以及如何設定 MIG 來修復 VM (如果已關閉)。
根據預設,MIG 會重新建立群組中失敗的 VM,自動修復該 VM。如果您已設定以應用程式為準的健康狀態檢查,MIG 也會修復健康狀態不良的 VM,因為應用程式在這些 VM 上無法通過健康狀態檢查。根據以應用程式為準的健康狀態檢查結果修復 VM,也稱為自動修復。
如果不想讓 MIG 修復失敗或不正常的 VM,可以關閉 MIG 的修復功能。在您想排解 VM 故障問題、實作自己的修復邏輯,或監控應用程式健康狀態,但不想修復健康狀態不良的 VM 時,關閉修復功能就很有用。
如要檢查 MIG 是否已停用修復功能,請檢查 MIG 中的修復設定。
如要進一步瞭解 MIG 中的修復作業,請參閱「關於修復 VM 以確保高可用性」一文。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
關閉 MIG 中的修復功能
關閉 MIG 中的修復功能後,系統預設會停用故障 VM 修復和自動修復功能。如要只關閉自動修復功能,請參閱「關閉自動修復功能」。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
按一下要停用修復功能的 MIG 名稱。
按一下 [編輯]。
按一下「執行個體生命週期和自動修復」展開該部分。
- 在「失敗時執行的動作」部分,將「失敗時的預設動作」欄位設為「沒有動作」。
- 如果您已設定自動修復功能,且不希望 MIG 關閉自動修復功能,請在「自動修復」部分中,將「健康狀態檢查失敗時」欄位設為「修復執行個體」。
按一下 [儲存]。
gcloud
如要在 MIG 中關閉修復功能,請使用下列
update指令。這會預設關閉自動修復功能。gcloud compute instance-groups managed update MIG_NAME \ --default-action-on-vm-failure=do-nothing \ --zone=ZONE如果 MIG 中已設定自動修復功能,且您不想預設關閉這項功能,請使用 beta
update指令將--action-on-vm-failed-health-check旗標設為repair。這樣一來,即使關閉修復失敗 VM 的功能,健康狀態不良的 VM 仍會繼續自動修復。gcloud beta compute instance-groups managed update MIG_NAME \ --default-action-on-vm-failure=do-nothing \ --action-on-vm-failed-health-check=repair \ --zone=ZONE更改下列內容:
MIG_NAME:執行個體群組的名稱。ZONE:MIG 所在的可用區。如為區域 MIG,請使用--region=REGION旗標。
REST
如要在 MIG 中關閉修復功能,請使用下列 API 方法。這會預設關閉自動修復功能。
- 如果是區域 MIG,請使用
instanceGroupManagers.patch方法。 - 如果是區域 MIG,請使用
regionInstanceGroupManagers.patch方法。
舉例來說,在區域 MIG 中發出下列呼叫。這項設定預設會關閉自動修復功能。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }如果 MIG 中已設定自動修復功能,且您不想預設關閉自動修復功能,請使用下列 API 方法將
onFailedHealthCheck標記設為REPAIR。這樣一來,即使關閉修復失敗 VM 的功能,系統仍會繼續自動修復健康狀態不良的 VM。- 如果是區域 MIG,請使用
beta.instanceGroupManagers.patch方法。 - 如果是區域 MIG,請使用
beta.regionInstanceGroupManagers.patch方法。
舉例來說,在區域 MIG 中發出下列呼叫:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING", "onFailedHealthCheck": "REPAIR" } }更改下列內容:
PROJECT_ID:您的專案 ID。MIG_NAME:MIG 的名稱。ZONE:MIG 所在的可用區。如果是地區 MIG,請在網址中使用regions/REGION。
限制
如果 MIG 具有下列任一項目,您就無法將
defaultActionOnFailure欄位設為DO_NOTHING,在 MIG 中關閉修復功能:關閉自動修復功能
在 MIG 中設定應用程式健康狀態檢查後,如果不想讓 MIG 修復任何健康狀態不良的 VM,可以個別關閉自動修復功能。這項操作不會關閉失敗 VM 的修復功能。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
按一下要關閉自動修復功能的 MIG 名稱。
按一下 [編輯]。
按一下「執行個體生命週期和自動修復」展開該部分。
在「Autohealing」(自動修復) 區段中,將「On failed health check」(健康狀態檢查失敗時) 欄位設為「No action」(不採取任何動作)。
按一下 [儲存]。
gcloud
如要關閉 MIG 的自動修復功能,請使用 Beta 版
update指令,並將--action-on-vm-failed-health-check旗標設為do-nothing。舉例來說,如要使用區域 MIG,請執行下列指令:
gcloud beta compute instance-groups managed update MIG_NAME \ --action-on-vm-failed-health-check=do-nothing \ --zone=ZONE更改下列內容:
MIG_NAME:MIG 的名稱。ZONE:MIG 所在的可用區。如為區域 MIG,請使用--region=REGION旗標。
REST
如要在 MIG 中關閉自動修復功能,請使用下列 API 方法,並將
--action-on-vm-failed-health-check標記設為do-nothing。- 如果是區域 MIG,請使用
beta.instanceGroupManagers.patch方法。 - 如果是區域 MIG,請使用
beta.regionInstanceGroupManagers.patch方法。
舉例來說,您可以提出下列要求,關閉區域 MIG 的自動修復功能:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "instanceLifecyclePolicy": { "onFailedHealthCheck": "DO_NOTHING" } }更改下列內容:
PROJECT_ID:您的專案 ID。ZONE:MIG 所在的可用區。如果是地區 MIG,請在網址中使用regions/REGION。MIG_NAME:執行個體群組的名稱。
開啟修復或自動修復功能
根據預設,MIG 會修復失敗的 VM,如果已設定自動修復功能,MIG 也會修復健康狀態不良的 VM。如果已關閉修復或自動修復功能,或兩者皆已關閉,可以再次開啟。
控制台
前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。
按一下要啟用修復功能的 MIG 名稱。
按一下 [編輯]。
按一下「執行個體生命週期和自動修復」展開該部分。
- 如要修復失敗的 VM,請在「失敗時的動作」部分,將「失敗時的預設動作」欄位設為「修復執行個體」。
- 如要修復不良健康狀態的 VM,請在「自動修復」部分,將「健康狀態檢查失敗時」欄位設為「修復執行個體」。如果將這個值設為「預設動作」,自動修復功能會使用您為「失敗時的預設動作」欄位設定的相同設定。
完成後,按一下「儲存」即可套用變更。
gcloud
如要在 MIG 中啟用修復功能,請使用
update指令。如果--action-on-vm-failed-health-check標記的值為default-action,這項操作也會開啟自動修復功能。gcloud compute instance-groups managed update MIG_NAME \ --default-action-on-vm-failure=repair如果您已個別關閉自動修復功能,並想再次開啟,請使用 beta
update指令:gcloud beta compute instance-groups managed update MIG_NAME \ --action-on-vm-failed-health-check=default-actionORrepair更改下列內容:
- 將
MIG_NAME替換為 MIG 的名稱。 default-actionORrepair:如要讓自動修復功能使用您為 VM 修復作業設定的相同設定,請將值設為default-action。舉例來說,當您關閉故障 VM 的修復功能時,MIG 也會關閉自動修復功能。如要分開控管狀況不良的 VM 修復作業,請將值設為repair。
REST
如要在 MIG 中啟用修復功能,請使用下列 API 方法。如果
onFailedHealthCheck欄位的值為DEFAULT_ACTION,這項操作也會開啟自動修復功能。- 如果是區域 MIG,請使用
instanceGroupManagers.patch方法。 - 如果是區域 MIG,請使用
regionInstanceGroupManagers.patch方法。
舉例來說,在區域 MIG 中提出下列要求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "defaultActionOnFailure": "REPAIR" } }如果您先前已個別關閉自動修復功能,而現在想要重新開啟,請使用 Beta 版 API 方法,步驟如下:
- 如果是區域 MIG,請使用
beta.instanceGroupManagers.patch方法。 - 如果是區域 MIG,請使用
beta.regionInstanceGroupManagers.patch方法。
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "onFailedHealthCheck": "DEFAULT_ACTIONORREPAIR" } }更改下列內容:
PROJECT_ID:您的專案 ID。ZONE:MIG 所在的可用區。如果是地區 MIG,請在網址中使用regions/REGION。MIG_NAME:MIG 的名稱。DEFAULT_ACTIONORREPAIR:如要讓自動修復功能使用與 VM 修復失敗相同的設定,請將值設為DEFAULT_ACTION。舉例來說,如果關閉故障 VM 的修復功能,MIG 也會關閉自動修復功能。如要個別設定自動修復功能,請將值設為REPAIR。
後續步驟
- 檢查 MIG 中的修復設定。
- 如要調查失敗的 VM 錯誤,請列出執行個體錯誤。
- 檢查 VM 的健康狀態。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-12-04 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-12-04 (世界標準時間)。"],[],[]] -