本文档介绍如何创建代管式实例组 (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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
在 Google Cloud Console 中,转到实例组页面。
其余步骤会显示在 Google Cloud 控制台中。
-
点击
创建实例组 以创建一个新的实例组。 -
选择新代管式实例组选项之一:
- 无状态(默认)
- 有状态
- 为实例组指定名称和(可选)说明。
- 为实例组选择一个实例模板或创建一个新实例模板。
- 在实例数或自动扩缩中,指定此实例组的实例数。请务必预配足够多的虚拟机,以便在一个可用区发生故障时,您的应用可获得相应的支持。
-
对于
位置 ,选择多个可用区。 - 选择一个区域,然后选择要使用的可用区。如果您选择了区域级实例模板,则系统会根据模板的区域自动选择区域。
- 在目标分布形状下,选择均匀。如果您想选择其他形状,请参阅为区域级 MIG 中的虚拟机设置目标分布形状。
- 如果您要停用主动式实例重新分布功能,请在实例重新分布下,取消选中 Allow instance redistribution(允许实例重新分布)复选框。
- 继续完成 MIG 创建过程的剩余部分。
- 如需创建 MIG,请点击
创建 。 PROJECT_ID
:此请求的项目 ID。REGION
:该实例组所在的区域。BASE_INSTANCE_NAME
:(可选)实例组中创建的每个虚拟机实例的名称。例如,基本实例名称example-instance
将创建名称类似于example-instance-[RANDOM_STRING]
的实例,其中[RANDOM_STRING]
由服务器生成。INSTANCE_TEMPLATE_NAME
:要使用的实例模板。对于区域级实例模板,您必须指定模板的完整或部分网址。完整网址的示例是https://www.googleapis.com/compute/v1/projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template
,部分网址是projects/example-project/regions/us-central1/instanceTemplates/example-regional-instance-template
。INSTANCE_GROUP_NAME
:MIG 的名称。TARGET_SIZE
:实例组中的虚拟机的目标数量。为各个可用区中的虚拟机设置目标分布形状
- 设置基于应用的自动修复功能,该功能会定期验证应用是否在 MIG 的每个虚拟机上按预期响应,并自动重新创建无响应的虚拟机。
- 启用自动扩缩功能,以根据负载的增减自动在 MIG 中添加或删除虚拟机。
- 了解如何通过设置并应用新的实例模板、所有实例配置或每个实例配置,将新配置应用于 MIG 中的所有或部分虚拟机。
- 通过添加有状态配置,在虚拟机重新创建、自动修复和更新等破坏性事件中保留磁盘、元数据和 IP 地址。
- 了解如何处理代管式实例,例如,如何删除、放弃和重新创建 MIG 中的虚拟机。
- 查看有关 MIG 及其虚拟机的信息。
- 模拟区域级 MIG 在一个可用区发生服务中断的情况
- 了解如何将外部 HTTP(S) 负载均衡器前端添加到实例组。如需了解其他类型的负载均衡器,请参阅负载均衡概览。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
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、Terraform, 或 REST。
控制台
gcloud
所有 MIG 都需要实例模板。如果您没有实例模板,请创建一个。例如,以下命令会创建具有默认属性的基本实例模板:
gcloud compute instance-templates create example-template
接下来,使用带有
--region
标志的instance-groups managed create
命令。例如,以下命令会在us-east1
区域内的三个可用区中创建一个区域级 MIG:gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --region us-east1
如果要选择实例组应使用的特定区域,请提供
--zones
标志:gcloud compute instance-groups managed create example-rmig \ --template example-template \ --size 30 \ --zones us-east1-b,us-east1-c
如果您要停用主动式实例重新分布功能,请参阅关闭主动式实例重新分布功能。
Terraform
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
如需创建区域级 MIG,您可以使用
google_compute_region_instance_group_manager
资源。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
REST
所有 MIG 都需要实例模板。如果您没有实例模板,请创建一个。
接下来,构建对
regionInstanceGroupManagers.insert
方法的POST
请求。在请求正文中,指定实例组名称、实例组大小和实例模板的网址。(可选)指定其他字段,例如实例组中实例的基本名称。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "baseInstanceName": "BASE_INSTANCE_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "name": "INSTANCE_GROUP_NAME", "targetSize": "TARGET_SIZE" }
替换以下内容:
如果您要选择特定可用区,或者要在包含的可用区少于或多于三个的区域中创建虚拟机,请在您的请求中添加
distributionPolicy
属性并提供可用区列表。将ZONE
替换为要在其中创建虚拟机的可用区的名称。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "baseInstanceName": "BASE_INSTANCE_NAME", "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME", "name": "INSTANCE_GROUP_NAME", "targetSize": "TARGET_SIZE", "distributionPolicy": { "zones": [ {"zone": "zones/ZONE"}, {"zone": "zones/ZONE"} ] } }
例如,以下命令会创建一个名为
example-rmig
的区域级 MIG,其中的 10 个代管实例分布在us-east1-b
和us-east1-c
可用区:POST https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-east1/instanceGroupManagers { "instanceTemplate": "global/instanceTemplates/example-instance", "name": "example-rmig", "targetSize": 10, "distributionPolicy": { "zones": [ {"zone": "zones/us-east1-b"}, {"zone": "zones/us-east1-c"} ] } }
各种政策和操作可能会影响组中的实例,具体取决于您对 MIG 进行配置和操作的方式。若要确定哪些代管实例已启动并正在运行,请参阅检查代管实例的状态。
如果每个可用区中没有足够的容量来支持实例组中的虚拟机,则 Compute Engine 会创建尽可能多的虚拟机,并在后续获得额外容量时继续尝试创建其余虚拟机。
如果您未在请求中明确指定各个可用区,则 Compute Engine 会自动选择三个可用区来创建虚拟机。如果您需要在多于或少于三个可用区中创建虚拟机,或者您希望选择使用哪些可用区,可以在您的请求中提供可用区列表。如需了解详情,请参阅可用区选择。
跨可用区的虚拟机分布
默认情况下,区域级 MIG 会在选定的可用区之间均匀分布虚拟机。由于您要创建区域 MIG,因此需要注意,某些资源是可用区级的,例如 GPU 和现有永久性磁盘。如果 MIG 的实例模板指定了可用区级资源,您必须确保所有选定可用区中都存在所有这些资源,这样这些资源才能够附加到区域 MIG 创建的虚拟机。或者,如果您希望实例组替您检查是否存在可用区级资源,则可以设置 MIG 的目标分布形状,以仅在包含这些资源的可用区中创建实例。
有关详情,请参阅以下文档:
主动式实例重新分布
主动式实例重新分布功能默认启用。如果您需要手动管理每个可用区中的虚拟机数量或将 MIG 的目标分布形状设置为
BALANCED
或ANY_SINGLE_ZONE
,则必须停用主动式实例重新分布功能。如需了解详情,请参阅以下文档:
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-22。
-