在区域级代管式实例组 (MIG) 中,如需在该区域的选定可用区中保持均匀的虚拟机 (VM) 实例数量,请使用主动式实例重新分布功能。此配置选项可在出现可用区级别故障时最大限度地提高应用的可用性。
对于区域级 MIG,主动式实例重新分布功能默认启用,但您可以为非自动扩缩的区域级 MIG 停用该功能。主动式实例重新分布功能停用时,实例组不会尝试主动在可用区之间重新分布虚拟机。在以下情况下,此操作将非常有用:
- 从实例组中删除或放弃虚拟机而不影响其他正在运行的虚拟机。例如,您可以在作业完成后删除批处理工作器虚拟机,而不影响其他工作器。
- 避免系统由于执行主动式重新分布操作而意外自动删除具有有状态工作负载的虚拟机。
- 将 MIG 的目标分布形状设置为
BALANCED
。
您可以在创建区域级 MIG 时停用主动式实例重新分布功能。您还可以为现有的区域级 MIG 启用或停用该功能。
准备工作
- 如果您要使用本指南中的 API 示例,请设置 API 访问权限。
- 如果您要使用本指南中的命令行示例,请安装 Google Cloud CLI。
创建停用了主动式实例重新分布功能的实例组
如需创建停用了主动式实例重新分布功能的区域级 MIG,请使用控制台、gcloud CLI 或 Compute Engine API。
控制台
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
替换以下内容:
INSTANCE_GROUP_NAME
:MIG 的名称INSTANCE_TEMPLATE_NAME
:要用于实例组的实例模板的名称TARGET_SIZE
:实例组的目标大小ZONES
:要在其中部署虚拟机的单个区域中的可用区列表
例如:
gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --zones us-east1-b,us-east1-c \ --instance-redistribution-type NONE
API
如需创建不具备主动式实例重新分布功能的非自动扩缩地区级 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" } }
请替换以下内容:
PROJECT_ID
:此请求的项目 IDREGION
:实例组所在的地区INSTANCE_GROUP_NAME
:MIG 的名称INSTANCE_TEMPLATE_NAME
:要用于实例组的实例模板的名称TARGET_SIZE
:实例组的目标大小ZONE
:要在其中部署虚拟机的单个区域中的可用区名称
关闭主动式实例重新分布功能
您必须先设置自动扩缩器的模式以关闭自动扩缩功能或者将其限制为仅扩容,然后才能关闭主动式实例重新分布功能。
如需停用或重新启用主动式实例分布功能,请使用控制台、gcloud CLI 或 Compute Engine API。
控制台
- 在控制台中,转到实例组页面。
- 在列表的名称列下方,点击您要修改的实例组的名称。
- 点击修改以修改此代管实例组。
- 如果存在任何自动扩缩配置,请确保将自动扩缩模式设置为关闭:不自动扩缩。
- 在实例重新分布下,取消选择启用实例重新分布复选框。
- 点击保存。
gcloud
如需为非自动扩缩的地区级 MIG 关闭主动式实例重新分布功能,请使用 compute instance-groups managed update
命令,并将 --instance-redistribution-type
标志设置为 NONE
。
gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \ --instance-redistribution-type NONE \ --region REGION
替换以下内容:
INSTANCE_GROUP_NAME
:MIG 的名称REGION
:实例组所在的地区
API
如需为非自动扩缩的地区级 MIG 关闭主动式实例重新分布功能,请向 regionInstanceGroupManagers.patch
方法发出 PATCH
请求。在请求正文中,添加 updatePolicy
属性并将其 instanceRedistributionType
字段设置为 NONE
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/[INSTANCE_GROUP_NAME { "updatePolicy": { "instanceRedistributionType": "NONE" } }
请替换以下内容:
PROJECT_ID
:此请求的项目 IDREGION
:实例组所在的地区INSTANCE_GROUP_NAME
:非自动扩缩 MIG 的名称
启用主动式实例分布功能
如需启用主动式实例分布功能,请使用与停用主动式实例重新分布功能类似的命令,但将实例重新分布类型设置为 PROACTIVE
。
如果您手动删除或放弃某些代管式实例,导致区域中虚拟机分布不均匀,则必须先手动重新平衡实例组,然后才能重新启用主动式实例重新分布功能。任意两个区域的虚拟机数量差不应超过 1 个虚拟机。
当各个区域中的虚拟机分布不均匀(两个区域的虚拟机数量差为 2 个或以上虚拟机)时,地区级 MIG 不允许启用主动式实例重新分布功能。这是为了防止意外自动删除具有较多虚拟机的区域中的虚拟机,该操作会为了实现均匀分布而触发。
后续步骤
- 了解如何查看有关 MIG 及其虚拟机的信息。
- 了解如何使用 MIG 中的虚拟机,包括如何添加、重新创建和移除实例。