在区域级代管式实例组 (MIG) 中,如需在该区域的选定可用区中保持均匀的虚拟机 (VM) 实例数量,请使用主动式实例重新分布功能。此配置选项可在出现可用区级别故障时最大限度地提高应用的可用性。
对于区域级 MIG,主动式实例重新分布功能默认处于开启状态。主动式实例重新分布功能关闭时,实例组不会尝试主动在可用区之间重新分布虚拟机。在以下情况下,关闭主动式实例重新分布功能非常有用:
- 从实例组中删除或放弃虚拟机而不影响其他正在运行的虚拟机。例如,您可以在作业完成后删除批处理工作器虚拟机,而不影响其他工作器。
- 避免系统由于执行主动式重新分布操作而意外自动删除具有有状态工作负载的虚拟机。
- 将 MIG 的目标分布形状设置为
BALANCED
或ANY_SINGLE_ZONE
。
您可以在创建区域级 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 控制台中,转到实例组页面。
- 点击创建实例组以创建一个新的实例组。
- 为实例组指定名称和(可选)说明。
- 为实例组选择一个实例模板或创建一个新实例模板。
- 指定此实例组内的虚拟机数量。对于高可用性工作负载,请务必预配足够多的虚拟机,以便在一个可用区发生故障时,应用可获得相应的支持。
- 在位置下,选择多个可用区。
- 选择一个区域,然后选择要使用的可用区。
- 如需停用主动式实例重新分布功能,请在实例重新分布下,取消选中 Allow instance redistribution(允许实例重新分布)复选框。
- 继续完成 MIG 创建过程的剩余部分。
INSTANCE_GROUP_NAME
:MIG 的名称INSTANCE_TEMPLATE_NAME
:要用于实例组的实例模板的名称TARGET_SIZE
:实例组的目标大小ZONES
:要在其中部署虚拟机的单个区域中的可用区列表PROJECT_ID
:此请求的项目 IDREGION
:实例组所在的地区INSTANCE_GROUP_NAME
:MIG 的名称INSTANCE_TEMPLATE_NAME
:要用于实例组的实例模板的名称TARGET_SIZE
:实例组的目标大小ZONE
:要在其中部署虚拟机的单个区域中的可用区名称- 在 Google Cloud 控制台中,转到实例组页面。
- 在列表的名称列下方,点击您要修改的实例组的名称。
- 点击修改以修改此代管实例组。
- 在实例重新分布下,取消选中 Allow instance redistribution(允许实例重新分布)复选框。
- 点击保存。
对于非自动扩缩的区域级 MIG 或模式设置为
OFF
或ONLY_SCALE_OUT
的自动扩缩的区域级 MIG,请使用compute instance-groups managed update
命令。例如:
gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --instance-redistribution-type NONE \ --region REGION
对于模式设置为
ON
的自动扩缩的区域级 MIG,请使用 Beta 版compute instance-groups managed update
命令。例如:
gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \ --instance-redistribution-type NONE \ --region REGION
INSTANCE_GROUP_NAME
:MIG 的名称REGION
:实例组所在的地区对于非自动扩缩的区域级 MIG 或模式设置为
OFF
或ONLY_SCALE_OUT
的自动扩缩的区域级 MIG,请使用regionInstanceGroupManagers.patch
方法。例如:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "instanceRedistributionType": "NONE" } }
对于模式设置为
ON
的自动扩缩的区域级 MIG,请使用 Beta 版regionInstanceGroupManagers.patch
方法。例如:
PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "updatePolicy": { "instanceRedistributionType": "NONE" } }
PROJECT_ID
:此请求的项目 IDREGION
:实例组所在的地区INSTANCE_GROUP_NAME
:MIG 的名称- 了解如何查看有关 MIG 及其虚拟机的信息。
- 了解如何使用 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,请使用 Google Cloud 控制台、gcloud CLI、Terraform 或 REST。
控制台
gcloud
如需创建不具备主动式实例重新分布功能的新地区级 MIG,请使用
gcloud compute instance-groups managed create
命令,并将--instance-redistribution-type
标志设置为NONE
。gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --template INSTANCE_TEMPLATE_NAME \ --size TARGET_SIZE \ --zones ZONES \ --instance-redistribution-type NONE
替换以下内容:
例如:
gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --zones us-east1-b,us-east1-c \ --instance-redistribution-type NONE
Terraform
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
如需创建区域级 MIG,请使用
google_compute_region_instance_group_manager
资源。如需在区域级 MIG 中停用主动式实例重新分布功能,请添加
update_policy
块,并将instance_redistribution_type
字段设置为NONE
。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
REST
如需创建不具备主动式实例重新分布功能的非自动扩缩地区级 MIG,请向
regionInstanceGroupManagers.insert
方法发出POST
请求。在请求正文中,添加updatePolicy
属性并将其instanceRedistributionType
字段设置为NONE
。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME { "name": "INSTANCE_GROUP_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "targetSize": TARGET_SIZE, "distributionPolicy": { "zones": [ {"zone": "zones/ZONE"}, {"zone": "zones/ZONE"} ] }, "updatePolicy": { "instanceRedistributionType": "NONE" } }
请替换以下内容:
关闭主动式实例重新分布功能
如需停用或重新启用主动式实例重新分布功能,请使用 Google Cloud 控制台、gcloud CLI 或 REST。
控制台
gcloud
如需关闭主动式实例重新分布功能,请使用以下命令将
--instance-redistribution-type
标志设置为NONE
:请替换以下内容:
REST
如需关闭主动式实例重新分布功能,请使用如下方法将
instanceRedistributionType
字段设置为NONE
:请替换以下内容:
开启主动式实例重新分布功能
如需开启主动式实例重新分布功能,请使用与关闭主动式实例重新分布功能类似的命令,但将实例重新分布类型设置为
PROACTIVE
。如果您手动删除或放弃某些代管式实例,导致区域中虚拟机分布不均匀,则必须先手动重新平衡实例组,然后才能重新启用主动式实例重新分布功能。任意两个区域的虚拟机数量差不应超过 1 个虚拟机。
当各个区域中的虚拟机分布不均匀(两个区域的虚拟机数量差为 2 个或以上虚拟机)时,地区级 MIG 不允许启用主动式实例重新分布功能。这是为了防止意外自动删除具有较多虚拟机的区域中的虚拟机,该操作会为了实现均匀分布而触发。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-21。
-