在 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. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

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

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

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

        gcloud init

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

限制

如果您的实例组满足以下条件,则无法停用 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

后续步骤