本文档介绍如何在单个可用区中创建代管式实例组 (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
-
安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:
gcloud init
- Set a default region and zone.
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
为您的 Google 账号创建本地身份验证凭据:
gcloud auth application-default login
-
在 Google Cloud 控制台中,打开实例组页面。
其余步骤将自动显示在 Google Cloud 控制台中。
-
点击
创建实例组 。 -
如果要创建有状态 MIG,请选择
新的代管式实例组(有状态) 选项。为帮助您决定,请参阅何时使用有状态 MIG。 - 为实例组指定名称和(可选)说明。
- 为实例组选择一个实例模板或创建一个新实例模板。
-
指定此实例组内的
虚拟机数量 。请务必预配足够多的虚拟机,以便在一个可用区发生故障时,您的应用可获得相应的支持。 -
对于
位置 ,选择单个可用区。 - 选择要在其中创建 MIG 的区域和可用区。如果您选择了区域级实例模板,则系统会根据模板的区域自动选择区域。
- 对于无状态 MIG,自动扩缩功能默认处于启用状态。当自动扩缩功能启用时,实例组会根据其利用率自动添加或移除实例。
- (可选)启用自动修复功能,以对该组中的虚拟机执行基于应用的健康检查。
- 点击创建以创建新组。
INSTANCE_GROUP_NAME
:此实例组的名称。SIZE
:此实例组的大小。INSTANCE_TEMPLATE
:该组将使用的实例模板的名称。 对于区域级实例模板,您必须指定模板的完整或部分网址。完整网址的示例是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
。ZONE
:提供 Compute Engine 服务的一个可用区。如果要在一个区域中的多个可用区之间分布 MIG 的虚拟机,请参阅创建区域级 MIG。PROJECT_ID
:请求的项目 ID。ZONE
:请求所在的可用区。如果要在一个区域中的多个可用区之间分布 MIG 的虚拟机,请将zones/ZONE
替换为regions/REGION
并指定区域。如需了解详情,请参阅创建区域级 MIG。INSTANCE_GROUP_NAME
:此实例组的名称。SIZE
:此实例组的大小。INSTANCE_TEMPLATE
:此实例组将使用的实例模板。- 设置基于应用的自动修复功能,该功能会定期验证应用是否在 MIG 的每个虚拟机上按预期响应,并自动重新创建无响应的虚拟机。
- 启用自动扩缩功能,以根据负载的增减自动在 MIG 中添加或删除虚拟机。
- 了解如何通过设置并应用新的实例模板、所有实例配置或每个实例配置,将新配置应用于 MIG 中的所有或部分虚拟机。
- 通过添加有状态配置,在虚拟机重新创建、自动修复和更新等破坏性事件中保留磁盘、元数据和 IP 地址。
- 了解如何使用代管式实例,例如,如何删除、放弃和重新创建 MIG 中的虚拟机。
- 查看有关 MIG 及其虚拟机的信息。
- 了解如何将外部 HTTP(S) 负载均衡器前端添加到实例组。如需了解其他类型的负载均衡器,请参阅负载均衡概览。
Terraform
如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
如需查看 MIG 限制的完整列表(因您使用的配置而异),请参阅 MIG 限制。
在单个可用区中创建 MIG
如需在单个可用区中创建 MIG,请使用 Google Cloud 控制台、gcloud CLI、Terraform 或 REST。
控制台
gcloud
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
使用
instance-groups managed create
命令创建代管式实例组,并指定组名称、组大小、实例模板和可用区。gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size SIZE \ --template INSTANCE_TEMPLATE \ --zone ZONE
请替换以下内容:
您可以视需要提供
--base-instance-name
标志。由于这些虚拟机是基于通用模板创建的,因此系统会为每个虚拟机分配一个随机字符串,作为虚拟机名称的一部分。基本名称加在此随机字符串的前面。例如,如果您将基本名称设置为test
,则虚拟机名称将类似于test-yahs
和test-qtyz
。如果您需要特定名称,请参阅在 MIG 中创建具有特定名称的实例。例如,以下命令会创建一个名为 example-group 的实例组,其基本虚拟机名称为
test
。该组包含三个实例:gcloud compute instance-groups managed create example-group \ --base-instance-name test \ --size 3 \ --template an-instance-template \ --zone us-central1-f
Terraform
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
如需创建可用区级 MIG,您可以使用
google_compute_instance_group_manager
资源。如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
REST
如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板。
使用
instanceGroupManagers.insert
方法创建代管式实例组。在请求正文中,包含实例组名称、实例组大小和实例模板的网址。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "versions": [ { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE" } ], "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE }
请替换以下内容:
您可以视需要提供
base-name
字段。由于这些虚拟机是基于通用模板创建的,因此系统会为每个虚拟机分配一个随机字符串,作为虚拟机名称的一部分。基本名称加在此随机字符串的前面。例如,如果您将基本名称设置为test
,则虚拟机名称将类似于test-yahs
和test-qtyz
。如果您需要特定名称,请参阅在 MIG 中创建具有特定名称的实例。各种政策和操作可能会影响组中的实例,具体取决于您对 MIG 进行配置和操作的方式。若要确定哪些代管实例已启动并正在运行,请参阅检查代管实例的状态。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-07-09。
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"翻译问题" },{ "type": "thumb-down", "id": "otherDown", "label":"其他" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"易于理解" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"解决了我的问题" },{ "type": "thumb-up", "id": "otherUp", "label":"其他" }] -