本文档介绍如何配置 MIG 以在修复操作期间重新创建虚拟机时应用最新的实例模板和每个实例配置。在修复操作期间应用最新的可用配置也称为修复时更新。本文档还介绍了如何检查 MIG 中是否启用了修复时更新功能,以及如何停用修复时更新功能(如果已启用)。
默认情况下,在修复期间,MIG 会使用最初用于创建虚拟机的同一实例配置重新创建虚拟机。如果有实例组的实例模板或每个实例配置的更新可用,您可以选择将这些更改应用于正在修复的虚拟机。
如果您想自动将配置更新应用于所有或一组虚拟机 (PROACTIVE
),或者选择性地更新特定实例 (OPPORTUNISTIC
),请参阅将新配置应用于 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
:实例组的名称。INSTANCE_TEMPLATE
:要用于实例组的实例模板的名称。SIZE
:实例组的目标大小。PROJECT_ID
:您的项目 ID。ZONE
:MIG 所在的可用区。MIG_NAME
:实例组的名称。INSTANCE_TEMPLATE
:要用于实例组的实例模板的名称。SIZE
:实例组的目标大小。在 Google Cloud 控制台中,转到实例组页面。
点击要检查其配置的 MIG 的名称。
点击详细信息标签页。
在虚拟机实例生命周期部分中,检查针对虚拟机实例修复期间的更新选择的选项。如果选择了更新实例配置,则启用修复时更新。
NO
:默认值。MIG 不会在虚拟机修复时更新虚拟机。YES
:MIG 会在修复期间更新虚拟机。NO
:默认值。MIG 不会在虚拟机修复时更新虚拟机。YES
:MIG 会在修复期间更新虚拟机。PROJECT_ID
:您的项目 ID。ZONE
:MIG 所在的可用区。MIG_NAME
:实例组的名称。在 Google Cloud 控制台中,转到实例组页面。
点击要停用修复时更新的 MIG 名称。
点击修改以修改 MIG。
在虚拟机实例生命周期部分中,针对虚拟机实例修复期间的更新,选择保留相同的实例配置。
点击保存。
PROJECT_ID
:您的项目 ID。ZONE
:MIG 所在的可用区。MIG_NAME
:实例组的名称。- 设置应用健康检查和自动修复。
- 如果您为 MIG 配置了基于应用的健康检查,请监控虚拟机健康状况变化。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
配置修复时更新
如需配置修复时更新,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
gcloud
对于现有 MIG,请使用
update
命令:gcloud compute instance-groups managed update MIG_NAME \ --force-update-on-repair
对于新的 MIG,请使用
create
命令:gcloud compute instance-groups managed create MIG_NAME \ --template INSTANCE_TEMPLATE \ --size SIZE \ --force-update-on-repair
请替换以下内容:
REST
对于现有的可用区级 MIG,请使用
instanceGroupManagers.patch
方法;对于现有的区域级 MIG,请使用regionInstanceGroupManagers.patch
方法。进行以下调用,在现有可用区级 MIG 中配置修复更新:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "forceUpdateOnRepair": YES } }
对于新的可用区级 MIG,请使用
instanceGroupManagers.insert
方法;对于新的区域级 MIG,请使用regionInstanceGroupManagers.insert
方法。创建可用区级 MIG 时,进行以下调用以配置修复时更新:
POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "MIG_NAME", "instanceTemplate": "INSTANCE_TEMPLATE", "targetSize": SIZE, "instanceLifecyclePolicy": { "forceUpdateOnRepair": YES } }
请替换以下内容:
检查是否启用了修复时更新
默认情况下,MIG 不会在修复期间更新虚拟机。如需检查是否为 MIG 启用了修复时更新,请使用 Google Cloud 控制台、gcloud CLI 或 REST 查看修复时更新配置。
控制台
gcloud
使用如下所示的
describe
命令:gcloud compute instance-groups managed describe MIG_NAME \ --format="(instanceLifecyclePolicy)"
在响应正文中,检查
forceUpdateOnRepair
字段,该字段的值为以下值之一:以下是输出示例:
instanceLifecyclePolicy: forceUpdateOnRepair: YES
REST
对于可用区级 MIG,请使用
instanceGroupManagers.get
方法;对于区域级 MIG,请使用regionInstanceGroupManagers.get
方法。例如,在可用区级 MIG 中,使用以下命令:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
在响应正文中,检查
instanceLifecyclePolicy.forceUpdateOnRepair
字段,该字段的值为以下值之一:以下是示例响应:
{ ... "name": "example-mig", "targetSize": 12, ... "instanceLifecyclePolicy": { "forceUpdateOnRepair": "YES" }, ... }
请替换以下内容:
停用修复更新
在 MIG 修复虚拟机时,如果您希望 MIG 使用用于创建虚拟机的原始实例模板或实例配置,则必须停用修复时更新。默认情况下,系统会对 MIG 停用修复时更新。
使用 Google Cloud 控制台、gcloud CLI 或 REST 停用修复时更新。
控制台
gcloud
使用
update
命令设置--no-force-update-on-repair
标志,如下所示:gcloud compute instance-groups managed update MIG_NAME \ --no-force-update-on-repair
REST
对于可用区级 MIG,请使用
instanceGroupManagers.patch
方法;对于区域级 MIG,请使用regionInstanceGroupManagers.patch
方法。例如,如需为可用区级 MIG 停用修复更新功能,请使用以下命令:
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "instanceLifecyclePolicy": { "forceUpdateOnRepair": NO } }
请替换以下内容:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-03。
-