本文档介绍如何在代管式实例组 (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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
在 Google Cloud 控制台中,前往实例群组页面。
点击要关闭修复的 MIG 的名称。
点击修改。
在虚拟机实例生命周期部分中,将失败时的默认操作字段设置为无操作。
如果您已配置自动修复,但不希望 MIG 关闭自动修复,请将在健康检查失败时字段设置为修复实例。
点击保存。
MIG_NAME
:实例组的名称。ZONE
:您的 MIG 所在的可用区。对于区域级 MIG,请使用--region=REGION
标志。- 对于可用区级 MIG,请使用
instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用
regionInstanceGroupManagers.patch
方法。 - 对于可用区级 MIG,请使用
beta.instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用
beta.regionInstanceGroupManagers.patch
方法。 PROJECT_ID
:您的项目 ID。MIG_NAME
:MIG 的名称。ZONE
:该 MIG 所在的可用区。 对于区域级 MIG,请在网址中使用regions/REGION
。在 Google Cloud 控制台中,前往实例群组页面。
点击要关闭自动修复的 MIG 的名称。
点击修改。
在虚拟机实例生命周期部分中,将未能通过健康检查时的操作字段设置为无操作。
点击保存。
MIG_NAME
:MIG 的名称。ZONE
:该 MIG 所在的可用区。 对于区域级 MIG,请使用--region=REGION
标志。- 对于可用区级 MIG,请使用
beta.instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用
beta.regionInstanceGroupManagers.patch
方法。 PROJECT_ID
:您的项目 ID。ZONE
:该 MIG 所在的可用区。对于区域级 MIG,请在网址中使用regions/REGION
。MIG_NAME
:实例组的名称。在 Google Cloud 控制台中,前往实例群组页面。
点击要开启修复的 MIG 的名称。
点击修改。
在虚拟机实例生命周期部分中,执行以下操作:
- 如需修复发生故障的虚拟机,请将失败时的默认操作字段设置为修复实例。
- 如需修复健康状况不佳的虚拟机,请将在健康检查失败时字段设置为修复实例。如果您将此值设置为默认操作,则自动修复功能会使用您为失败时的默认操作字段配置的相同设置。
完成后,点击保存以应用更改。
- 将
MIG_NAME
替换为 MIG 的名称。 default-action
ORrepair
:如果您希望自动修复功能使用与您为修复故障虚拟机配置的设置相同的设置,请将此值设置为default-action
。例如,如果您关闭了故障虚拟机的修复功能,MIG 也会关闭自动修复功能。如果您想单独控制对运行不正常的虚拟机的修复,请将此值设置为repair
。- 对于可用区级 MIG,请使用
instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用
regionInstanceGroupManagers.patch
方法。 - 对于可用区级 MIG,请使用
beta.instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用
beta.regionInstanceGroupManagers.patch
方法。 PROJECT_ID
:您的项目 ID。ZONE
:您的 MIG 所在的可用区。对于区域级 MIG,请在网址中使用regions/REGION
。MIG_NAME
:MIG 的名称。DEFAULT_ACTION
ORREPAIR
:如果您希望自动修复功能使用与修复故障虚拟机相同的设置,请将此值设置为DEFAULT_ACTION
。例如,如果您关闭了对发生故障的虚拟机的修复,MIG 也会关闭自动修复功能。如果您想单独配置自动修复功能,请将该值设置为REPAIR
。- 检查 MIG 中是否停用了修复功能。
- 通过列出实例错误来调查失败的虚拟机中的错误。
- 检查虚拟机的运行状况。
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 中关闭修复功能,则会同时关闭虚拟机故障修复和自动修复功能。如果您只想关闭自动修复功能,请参阅关闭自动修复。
控制台
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
替换以下内容:
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" } }
替换以下内容:
关闭自动修复
在 MIG 中配置应用健康检查后,如果您不希望 MIG 修复任何运行不正常的虚拟机,可以单独关闭自动修复功能。这不会关闭对失败虚拟机的修复。
控制台
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
替换以下内容:
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" } }
替换以下内容:
开启修复或自动修复功能
默认情况下,MIG 会修复失败的虚拟机;如果配置了自动修复,MIG 还会修复运行不正常的虚拟机。如果您关闭了修复或自动修复功能,可以重新将其开启。
控制台
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
ORrepair
替换以下内容:
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
ORREPAIR
" } }替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-05-13。
-