在 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

在 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 具有以下任一条件,则无法通过将 defaultActionOnFailure 字段设置为 DO_NOTHING 来停用 MIG 中的修复功能:

关闭自动修复功能

在 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

后续步骤