在 MIG 中关闭修复


本文档介绍如何在代管式实例组 (MIG) 中关闭修复功能,以及如何将 MIG 重新设置为修复虚拟机(如果已关闭)。

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

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

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

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

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

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

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

限制

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

在 MIG 中关闭修复

如果在 MIG 中关闭修复功能,将会关闭自动修复以及基于应用的健康检查的修复(自动修复)。

如需关闭修复功能,请使用 Google Cloud 控制台gcloud CLIREST

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    转到“实例组”

  2. 如果您已有 MIG,请执行以下操作:

    1. 点击要关闭修复的 MIG 的名称。
    2. 点击修改
  3. 如果您还没有 MIG,请执行以下操作:

    1. 点击创建实例组
    2. 输入名称
    3. 选择实例模板
    4. 对于其他设置,您可以使用默认值或修改这些字段。
  4. 虚拟机实例生命周期部分中,将失败时的默认操作设置为无操作

  5. 完成后,点击保存(针对现有 MIG)或创建(针对新 MIG)。

gcloud

如需在现有 MIG 中停用修复功能,请使用 Beta 版 update 命令

例如,您可以使用以下命令停用可用区级 MIG 中的修复功能:

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

如需在创建 MIG 时停用修复功能,请使用 Beta 版 create 命令

例如,在创建可用区级 MIG 时,您可以使用以下命令停用修复功能:

gcloud beta compute instance-groups managed create MIG_NAME \
    --template=INSTANCE_TEMPLATE \
    --size=SIZE \
    --zone=ZONE \
    --default-action-on-vm-failure=do_nothing

替换以下内容:

  • MIG_NAME:实例组的名称。
  • INSTANCE_TEMPLATE:要用于实例组的实例模板的名称。
  • SIZE:实例组的目标大小。
  • ZONE:该 MIG 所在的可用区。对于区域级 MIG,请使用 --region 标志。

REST

如需在现有 MIG 中停用修复功能,请使用 API 方法,如下所示:

例如,进行以下调用,以停用现有可用区级 MIG 中的修复功能:

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

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

如需在创建 MIG 时停用修复功能,请使用 API 方法,如下所示:

例如,在创建可用区级 MIG 时,进行以下调用以停用修复功能:

POST https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "INSTANCE_TEMPLATE_URL"
     }
  ],
  "name": "MIG_NAME",
  "targetSize": SIZE,
  "instanceLifecyclePolicy":
   {
     "defaultActionOnFailure": "DO_NOTHING"
   }
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • MIG_NAME:实例组的名称。
  • INSTANCE_TEMPLATE_URL:您要用于在实例组中创建虚拟机的实例模板的部分网址。例如:
    • 区域级实例模板:projects/example-project/regions/us-central1/instanceTemplates/example-template
    • 全球实例模板:projects/example-project/global/instanceTemplates/example-template
  • SIZE:实例组的目标大小。
  • ZONE:该 MIG 所在的可用区。对于区域级 MIG,请在网址中使用 regions/REGION

将 MIG 设置为修复失败和运行不正常的虚拟机

默认情况下,MIG 会修复失败和运行不正常的虚拟机。如果您停用了 MIG 中的修复功能,则可以重新将其设置为修复虚拟机。

控制台

  1. 在 Google Cloud 控制台中,转到实例组页面。

    转到“实例组”

  2. 点击要在其中设置修复的 MIG 的名称。

  3. 点击修改

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

  5. 完成后,点击保存以应用更改。

gcloud

如需设置 MIG 以修复虚拟机,请使用 Beta 版 update 命令

gcloud beta compute instance-groups managed update MIG_NAME \
    --default-action-on-vm-failure=repair

MIG_NAME 替换为 MIG 的名称。

REST

如需设置 MIG 来修复虚拟机,请使用 API 方法,如下所示:

例如,进行以下调用,以停用可用区级 MIG 中的修复功能:

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

{
  "instanceLifecyclePolicy":
  {
    "defaultActionOnFailure": "REPAIR"
 }
}

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • MIG_NAME:实例组的名称。
  • ZONE:该 MIG 所在的可用区。对于区域级 MIG,请在网址中使用 regions/REGION

后续步骤