创建具有多个机器类型的 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. Install the Google Cloud CLI, then initialize it by running the following command:

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

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      如需了解详情,请参阅 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

控制台

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

    进入“实例组”

  2. 点击创建实例组

  3. 名称字段中,输入 MIG 的名称。

  4. 实例模板列表中,选择要为 MIG 使用的实例模板。

  5. 您需要先执行以下操作,然后才能指定实例数并添加实例选择

    1. 按如下方式设置位置:

      1. 继续滚动到位置部分,然后选择多个可用区

      2. 区域可用区下拉菜单中,选择要在 MIG 中创建虚拟机的区域和可用区。如果您选择了区域级实例模板,则系统会默认选择该模板所在的区域。

      3. 目标分布形状字段中,选择均衡任意单个可用区

      4. 在随即打开的对话框中,点击停用实例重新分配

    2. 按如下方式删除自动扩缩配置:

      1. 自动扩缩部分中,点击自动扩缩模式下拉菜单中的删除自动扩缩配置

      2. 在随即打开的对话框中,点击删除

    3. 滚动回实例数字段。

  6. 实例数字段中,指定您希望在该组中包含的虚拟机数量。

  7. 实例选择部分中,点击添加实例选择

    系统随即会打开实例选择窗口。

    1. 点击添加实例选择

    2. 新实例选择部分中,执行以下操作:

      1. 名称字段中,为所选实例输入名称。

      2. 机器类型部分中,点击添加机器类型,在实例选择中选择要添加的机器类型,然后点击完成

        针对您要添加到实例选择中的每种机器类型重复此步骤。

      3. 将机器类型添加到实例选择后,点击完成

  8. 实例选择窗口中,点击完成

  9. 将其他字段保留为默认设置,或根据需要进行修改。

  10. 点击创建

gcloud

如需创建具有多个机器类型的区域级 MIG,请使用 instance-groups managed create 命令,如下所示:

gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --region REGION \
    --size TARGET_SIZE \
    --template INSTANCE_TEMPLATE \
    --target-distribution-shape SHAPE \
    --instance-redistribution-type none \
    --instance-selection-machine-types MACHINE_TYPE,MACHINE_TYPE,...

可用区 MIG 不支持实例灵活性。不过,如果您想在单个可用区中创建 MIG,请将目标分布形状设置为 any-single-zone。此外,如果您想要特定区域,请使用 any-single-zone 分布形状并添加 --zones ZONE 标志。

替换以下内容:

  • INSTANCE_GROUP_NAME:MIG 的名称。
  • REGION:您要在其中创建 MIG 的区域。
  • TARGET_SIZE:您希望 MIG 创建和维护的虚拟机数量。
  • INSTANCE_TEMPLATE:实例模板的名称。
  • SHAPE:目标分布形状。值可以是 balancedany-single-zone。不支持其他目标分布形状。
  • MACHINE_TYPE:您要在 MIG 中配置的机器类型,例如 n1-standard-16,n2-standard-16,e2-standard-16

Terraform

如果您尚未创建您希望为 MIG 中的每个虚拟机指定虚拟机属性的实例模板,请创建实例模板

如需创建具有多个机器类型的区域级 MIG,请使用 google_compute_region_instance_group_manager 资源

resource "google_compute_region_instance_group_manager" "default" {
  name               = "flex-igm"
  base_instance_name = "tf-test-flex-igm"
  region             = "us-central1"

  target_size                      = 3
  distribution_policy_target_shape = "ANY_SINGLE_ZONE"

  version {
    instance_template = google_compute_instance_template.default.id
  }

  instance_flexibility_policy {
    instance_selections {
      name          = "default-instance-selection"
      machine_types = ["n1-standard-16", "n2-standard-16", "e2-standard-16"]
    }
  }

  update_policy {
    instance_redistribution_type = "NONE"
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REPLACE"
    max_surge_fixed              = 0
    max_unavailable_fixed        = 6
  }
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

REST

如需创建具有多个机器类型的区域级 MIG,请向 regionInstanceGroupManagers.insert 方法发出 POST 请求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers

{
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": TARGET_SIZE,
  "instanceTemplate": "INSTANCE_TEMPLATE_URL",
  "distributionPolicy": {
    "targetShape": "SHAPE"
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  },
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "INSTANCE_SELECTION": {
        "machineTypes": [
          "MACHINE_TYPE_1",
          "MACHINE_TYPE_2",
          ...
        ]
      }
    }
  }
}

可用区 MIG 不支持实例灵活性。不过,如果您想在单个可用区中创建 MIG,请将目标分布形状设置为 ANY_SINGLE_ZONE。此外,如果您想要特定区域,请使用 ANY_SINGLE_ZONE 分布形状,并在请求中添加 distributionPolicy.zones[].zone 字段。

替换以下内容:

  • PROJECT_ID:您的项目 ID
  • REGION:您要在其中创建 MIG 的区域。
  • INSTANCE_GROUP_NAME:MIG 的名称。
  • TARGET_SIZE:您希望 MIG 创建和维护的虚拟机数量。
  • INSTANCE_TEMPLATE_URL:实例模板的网址。
  • SHAPE:目标分布形状。值可以是 BALANCEDANY_SINGLE_ZONE。不支持其他目标分布形状。
  • INSTANCE_SELECTION:机器类型列表的名称。
  • MACHINE_TYPE:您要在 MIG 中配置的机器类型,例如 "n1-standard-16","n2-standard-16","e2-standard-16"

后续步骤