本文档介绍如何配置 MIG 以在repair操作期间重新创建虚拟机时应用最新的实例模板和每个实例配置。在修复操作期间应用最新的可用配置也称为修复时更新。本文档还介绍了如何检查 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-11-15。
-