本文档介绍如何在代管式实例组 (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,请执行以下操作:
- 点击创建实例组。
- 输入名称。
- 选择实例模板。
- 对于其他设置,您可以使用默认值或修改这些字段。
在虚拟机实例生命周期部分中,将失败时的默认操作设置为无操作。
完成后,点击保存(针对现有 MIG)或创建(针对新 MIG)。
MIG_NAME
:实例组的名称。INSTANCE_TEMPLATE
:要用于实例组的实例模板的名称。SIZE
:实例组的目标大小。ZONE
:该 MIG 所在的可用区。对于区域级 MIG,请使用--region
标志。- 对于可用区级 MIG,请使用 Beta 版
instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用 Beta 版
regionInstanceGroupManagers.patch
方法。 - 对于可用区级 MIG,请使用 Beta 版
instanceGroupManagers.insert
方法。 - 对于区域级 MIG,请使用 Beta 版
regionInstanceGroupManagers.insert
方法。 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
。在 Google Cloud 控制台中,转到实例组页面。
点击要在其中设置修复的 MIG 的名称。
点击修改。
在虚拟机实例生命周期部分中,将失败时的默认操作设置为修复实例。
完成后,点击保存以应用更改。
- 对于可用区级 MIG,请使用 Beta 版
instanceGroupManagers.patch
方法。 - 对于区域级 MIG,请使用 Beta 版
regionInstanceGroupManagers.patch
方法。 PROJECT_ID
:您的项目 ID。MIG_NAME
:实例组的名称。ZONE
:该 MIG 所在的可用区。对于区域级 MIG,请在网址中使用regions/REGION
。- 通过列出实例错误来调查失败的虚拟机中的错误。
- 检查虚拟机的运行状况。
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 中关闭修复功能,将会关闭自动修复以及基于应用的健康检查的修复(自动修复)。
如需关闭修复功能,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
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
替换以下内容:
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" } }
替换以下内容:
将 MIG 设置为修复失败和运行不正常的虚拟机
默认情况下,MIG 会修复失败和运行不正常的虚拟机。如果您停用了 MIG 中的修复功能,则可以重新将其设置为修复虚拟机。
控制台
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" } }
替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-