關閉 MIG 中的修復功能

本文說明如何關閉代管執行個體群組 (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 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

關閉 MIG 中的修復功能

關閉 MIG 的修復功能後,系統預設會停用故障 VM 修復和自動修復功能。如要只關閉自動修復功能,請參閱「關閉自動修復功能」。

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 按一下要停用修復功能的 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「執行個體生命週期和自動修復」展開該部分。

    1. 在「失敗時執行的動作」部分,將「失敗時的預設動作」欄位設為「沒有動作」。
    2. 如果您已設定自動修復功能,且不希望 MIG 關閉自動修復功能,請在「自動修復」部分中,將「健康狀態檢查失敗時」欄位設為「修復執行個體」。
  5. 按一下 [儲存]。

gcloud

如要在 MIG 中關閉修復功能,請使用 update 指令,如下所示。這項設定預設會關閉自動修復功能。

gcloud compute instance-groups managed update MIG_NAME \
    --default-action-on-vm-failure=do-nothing \
    --zone=ZONE

如果 MIG 中已設定自動修復功能,且您不想預設關閉這項功能,請使用 update 指令將 --action-on-vm-failed-health-check 旗標設為 repair。這樣一來,即使關閉修復失敗 VM 的功能,系統仍會繼續自動修復健康狀態不良的 VM。

gcloud 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 中進行下列呼叫。這項設定預設會關閉自動修復功能。

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 中進行下列呼叫:

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 的修復功能。

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 按一下要停用自動修復功能的 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「執行個體生命週期和自動修復」展開該部分。

  5. 在「自動修復」部分,將「健康狀態檢查失敗時」欄位設為「不採取任何動作」。

  6. 按一下 [儲存]。

gcloud

如要關閉現有 MIG 的自動修復功能,請使用 update 指令,並將 --action-on-vm-failed-health-check 旗標設為 do-nothing。

舉例來說,如要使用可用區 MIG,請執行下列指令:

gcloud 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 的自動修復功能,請發出下列要求:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
  "instanceLifecyclePolicy":
   {
     "onFailedHealthCheck": "DO_NOTHING"
   }
}

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • ZONE:MIG 所在的可用區。如果是區域 MIG,請在網址中使用 regions/REGION。
  • MIG_NAME:執行個體群組的名稱。

開啟修復或自動修復功能

根據預設,MIG 會修復故障的 VM,如果已設定自動修復功能,MIG 也會修復健康狀態不良的 VM。如果已關閉修復或自動修復功能,可以再次開啟。

控制台

  1. 前往 Google Cloud 控制台的「Instance groups」(執行個體群組) 頁面。

    前往「Instance groups」(執行個體群組)

  2. 按一下要啟用修復功能的 MIG 名稱。

  3. 按一下 [編輯]。

  4. 按一下「執行個體生命週期和自動修復」展開該部分。

    • 如要修復失敗的 VM,請在「Action on failure」部分,將「Default action on failure」欄位設為「Repair instance」。
    • 如要修復健康狀態不良的 VM,請在「自動修復」部分,將「健康狀態檢查失敗時」欄位設為「修復執行個體」。如果將這個值設為「預設動作」,自動修復功能就會使用您為「失敗時的預設動作」欄位設定的相同設定。
  5. 完成後,按一下「儲存」即可套用變更。

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

如果您先前個別關閉了自動修復功能,而現在想要重新開啟,請使用 update 指令:

gcloud compute instance-groups managed update MIG_NAME \
    --action-on-vm-failed-health-check=default-action OR repair

更改下列內容:

  • 將 MIG_NAME 替換為 MIG 名稱。
  • default-action OR repair:如要讓自動修復功能使用您為 VM 修復設定的值,請將值設為 default-action。舉例來說,當您關閉故障 VM 的修復功能時,MIG 也會關閉自動修復功能。如要分別控管健康狀態不良的 VM 修復作業,請將值設為 repair。

REST

如要在 MIG 中啟用修復功能,請使用下列 API 方法。如果 onFailedHealthCheck 欄位的值為 DEFAULT_ACTION,這也會開啟自動修復功能。

舉例來說,在可用區 MIG 中提出下列要求:

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
    {
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "REPAIR"
      }
    }
  

如果您先前個別關閉了自動修復功能,而現在想要重新開啟,請按照下列步驟使用 API 方法:

  PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
  {
    "instanceLifecyclePolicy": {
      "onFailedHealthCheck": "DEFAULT_ACTION OR REPAIR"
    }
  }

更改下列內容:

  • PROJECT_ID:您的專案 ID。
  • ZONE:MIG 所在的可用區。如果是區域 MIG,請在網址中使用 regions/REGION。
  • MIG_NAME:MIG 的名稱。
  • DEFAULT_ACTION OR REPAIR:如要讓自動修復功能使用與 VM 修復失敗相同的設定,請將值設為 DEFAULT_ACTION。舉例來說,如果關閉故障 VM 的修復功能,MIG 也會關閉自動修復功能。如要個別設定自動修復功能,請將值設為 REPAIR。

後續步驟