在 MIG 中关闭修复


本文档介绍如何在代管式实例组 (MIG) 中关闭对失败和运行不正常的虚拟机的修复,以及如何配置 MIG 以修复虚拟机(如果已关闭)。

默认情况下,MIG 通过重新创建虚拟机来自动修复实例组中失败的虚拟机。如果您配置了基于应用的健康检查,MIG 还会在运行不正常虚拟机未通过应用的健康检查时将其修复。根据基于应用的健康检查修复虚拟机也称为自动修复。

如果您不希望 MIG 修复失败或运行不正常的虚拟机,则可以停用 MIG 中的修复功能。如果您要排查发生故障的虚拟机、实现您自己的修复逻辑或监控应用运行状况,而不想修复运行不正常的虚拟机,则关闭修复功能非常有用。

如需检查 MIG 中是否已停用修复功能,请参阅检查 MIG 中是否停用了修复功能

如需详细了解 MIG 中的修复功能,请参阅关于修复虚拟机以实现高可用性

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

限制

如果您的实例组满足以下条件,则无法停用 MIG 中的修复功能:

在 MIG 中关闭修复

默认情况下,如果您在 MIG 中关闭修复功能,则会同时关闭虚拟机故障修复和自动修复功能。如果您只想关闭自动修复功能,请参阅关闭自动修复

控制台

  1. 在 Google Cloud 控制台中,前往实例群组页面。

    进入“实例组”

  2. 点击要关闭修复的 MIG 的名称。

  3. 点击修改

  4. 虚拟机实例生命周期部分中,将失败时的默认操作字段设置为无操作

  5. 如果您已配置自动修复,但不希望 MIG 关闭自动修复,请将在健康检查失败时字段设置为修复实例

  6. 点击保存

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。这样,即使停用了修复故障虚拟机的功能,运行状况不佳的虚拟机的自动修复功能也能继续运行。

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 中进行以下调用。默认情况下,这会关闭自动修复功能。

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

{
  "instanceLifecyclePolicy":
    {
      "defaultActionOnFailure": "DO_NOTHING"
    }
  }

如果 MIG 中配置了自动修复功能,并且您不想默认停用自动修复功能,请使用以下 API 方法将 onFailedHealthCheck 标志设置为 REPAIR。这样可确保即使停用了故障虚拟机的修复功能,运行状况不佳的虚拟机的自动修复功能仍会继续运行。

例如,在可用区级 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 中配置应用健康检查后,如果您不希望 MIG 修复任何运行不正常的虚拟机,可以单独关闭自动修复功能。这不会关闭对失败虚拟机的修复。

控制台

  1. 在 Google Cloud 控制台中,前往实例群组页面。

    进入“实例组”

  2. 点击要关闭自动修复的 MIG 的名称。

  3. 点击修改

  4. 虚拟机实例生命周期部分中,将未能通过健康检查时的操作字段设置为无操作

  5. 点击保存

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 中停用自动修复:

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 会修复失败的虚拟机;如果配置了自动修复,MIG 还会修复运行不正常的虚拟机。如果您关闭了修复或自动修复功能,可以重新将其开启。

控制台

  1. 在 Google Cloud 控制台中,前往实例群组页面。

    进入“实例组”

  2. 点击要开启修复的 MIG 的名称。

  3. 点击修改

  4. 虚拟机实例生命周期部分中,执行以下操作:

    • 如需修复发生故障的虚拟机,请将失败时的默认操作字段设置为修复实例
    • 如需修复健康状况不佳的虚拟机,请将在健康检查失败时字段设置为修复实例。如果您将此值设置为默认操作,则自动修复功能会使用您为失败时的默认操作字段配置的相同设置。
  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

如果您已单独关闭自动修复功能,但想重新启用该功能,请使用Beta 版 update 命令

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

替换以下内容:

  • MIG_NAME 替换为 MIG 的名称。
  • default-action OR repair:如果您希望自动修复功能使用与您为修复故障虚拟机配置的设置相同的设置,请将此值设置为 default-action。例如,如果您关闭了故障虚拟机的修复功能,MIG 也会关闭自动修复功能。如果您想单独控制对运行不正常的虚拟机的修复,请将此值设置为 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"
      }
    }
  

如果您已单独关闭自动修复功能,但想重新启用该功能,请使用 Beta 版 API 方法,如下所示:

  PATCH https://compute.googleapis.com/compute/beta/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:如果您希望自动修复功能使用与修复故障虚拟机相同的设置,请将此值设置为 DEFAULT_ACTION。例如,如果您关闭了对发生故障的虚拟机的修复,MIG 也会关闭自动修复功能。如果您想单独配置自动修复功能,请将该值设置为 REPAIR

后续步骤