在单个可用区中创建 MIG


本文档介绍如何在单个可用区中创建代管式实例组 (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

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      如需在本地开发环境中使用本页面上的 Terraform 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。

      1. 安装 Google Cloud CLI。
      2. 如需初始化 gcloud CLI,请运行以下命令:

        gcloud init
      3. 为您的 Google 账号创建本地身份验证凭据:

        gcloud auth application-default login

      如需了解详情,请参阅 Set up authentication for a local development environment

      REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

限制

如需查看 MIG 限制的完整列表(因您使用的配置而异),请参阅 MIG 限制

在单个可用区中创建 MIG

如需在单个可用区中创建 MIG,请使用 Google Cloud 控制台gcloud CLI、Terraform 或 REST

控制台

  1. 在 Google Cloud 控制台中,打开实例组页面。

    转到“实例组”

    其余步骤将自动显示在 Google Cloud 控制台中。

  2. 点击创建实例组
  3. 如果要创建有状态 MIG,请选择新的代管式实例组(有状态)选项。为帮助您决定,请参阅何时使用有状态 MIG
  4. 为实例组指定名称和(可选)说明。
  5. 为实例组选择一个实例模板或创建一个新实例模板
  6. 指定此实例组内的虚拟机数量。请务必预配足够多的虚拟机,以便在一个可用区发生故障时,您的应用可获得相应的支持。
  7. 对于位置,选择单个可用区
  8. 选择要在其中创建 MIG 的区域可用区。如果您选择了区域级实例模板,则系统会根据模板的区域自动选择区域
  9. 对于无状态 MIG,自动扩缩功能默认处于启用状态。当自动扩缩功能启用时,实例组会根据其利用率自动添加或移除实例
  10. (可选)启用自动修复功能,以对该组中的虚拟机执行基于应用的健康检查。
  11. 点击创建以创建新组。

gcloud

如果您尚未创建您希望为 MIG 中的每个虚拟机指定机器类型、启动磁盘映像、网络和其他虚拟机属性的实例模板,请创建实例模板

使用 instance-groups managed create 命令创建代管式实例组,并指定组名称、组大小、实例模板和可用区。

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --size SIZE \
    --template INSTANCE_TEMPLATE \
    --zone ZONE

请替换以下内容:

  • 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

您可以视需要提供 --base-instance-name 标志。由于这些虚拟机是基于通用模板创建的,因此系统会为每个虚拟机分配一个随机字符串,作为虚拟机名称的一部分。基本名称加在此随机字符串的前面。例如,如果您将基本名称设置为 test,则虚拟机名称将类似于 test-yahstest-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 资源

resource "google_compute_instance_group_manager" "default" {

  name               = "example-group"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
}

如需了解如何应用或移除 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
}

请替换以下内容:

  • PROJECT_ID:请求的项目 ID。
  • ZONE:请求所在的可用区。如果要在一个区域中的多个可用区之间分布 MIG 的虚拟机,请将 zones/ZONE 替换为 regions/REGION 并指定区域。如需了解详情,请参阅创建区域级 MIG
  • INSTANCE_GROUP_NAME:此实例组的名称。
  • SIZE:此实例组的大小。
  • INSTANCE_TEMPLATE:此实例组将使用的实例模板。

您可以视需要提供 base-name 字段。由于这些虚拟机是基于通用模板创建的,因此系统会为每个虚拟机分配一个随机字符串,作为虚拟机名称的一部分。基本名称加在此随机字符串的前面。例如,如果您将基本名称设置为 test,则虚拟机名称将类似于 test-yahstest-qtyz。如果您需要特定名称,请参阅在 MIG 中创建具有特定名称的实例

各种政策和操作可能会影响组中的实例,具体取决于您对 MIG 进行配置和操作的方式。若要确定哪些代管实例已启动并正在运行,请参阅检查代管实例的状态

后续步骤