创建启用了自动扩缩功能的 MIG


本文档介绍如何创建能够自动扩缩的代管式实例组 (MIG),以便根据整个实例组的平均 CPU 利用率自动添加和移除虚拟机。例如,如果实例组的 CPU 利用率较低,则实例组会自动移除虚拟机以节省费用。

您可以根据各种自动扩缩信号来自动扩缩 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 并启用自动扩缩

使用 Google Cloud 控制台gcloud CLI、Terraform, 或 REST

控制台

  1. 在控制台中,前往实例组页面。

    转到“实例组”

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

  2. 如果您有实例组,请选择该实例组,然后点击修改。如果您没有实例组,请点击创建实例组
  3. 对于新实例组,请指定名称,然后为该实例组选择实例模板或创建新的实例组
  4. 如果不存在自动扩缩配置,请在自动扩缩下点击配置自动扩缩
  5. 自动扩缩模式下,选择“开启:在实例组中添加和移除实例”
  6. 指定您希望自动扩缩器在此组中创建的实例数量下限和上限。
  7. 自动扩缩指标部分中,如果现有的 CPU 利用率指标尚不存在,请添加一项指标:
    1. 点击添加指标
    2. 指标类型下,选择 CPU 利用率
    3. 输入所需的目标 CPU 利用率。此值被视为百分比。例如,如果 CPU 利用率为 75%,请输入 75
    4. 预测性自动扩缩下,选择关闭。如需详细了解预测性自动扩缩以及它是否适合您的工作负载,请参阅根据预测进行扩缩
    5. 点击完成
  8. 您可以使用初始化期来设置初始化期,以告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。
  9. 如需创建 MIG,请点击创建

gcloud

您必须先创建 MIG,然后才能启用自动扩缩功能。请按照说明执行以下操作:创建 MIG 并将虚拟机限制在单个可用区创建 MIG 并使其虚拟机分布在一个区域内的多个可用区中

然后使用 set-autoscaling 子命令为组启用自动扩缩功能。例如,以下命令会创建目标 CPU 利用率为 60% 的自动扩缩器。创建自动扩缩器时,不仅需要 --target-cpu-utilization 参数,还需要 --max-num-replicas 参数。

(可选)您可以设置 --min-num-replicas,以指明该组中所需的最小虚拟机数。如果您未设置最小值,则默认情况下,MIG 会将此值设置为 2。

您可以使用 --cool-down-period 标志来设置初始化期,用于告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
  --max-num-replicas 20 \
  --target-cpu-utilization 0.60 \
  --cool-down-period 90

如果需要,您可以启用预测性自动扩缩功能,以在预测的负载之前提前横向扩容。如需了解预测性自动扩缩是否适合您的工作负载,请参阅根据预测进行扩缩

您可以使用 instance-groups managed describe 命令验证自动扩缩功能是否已成功启用,该命令描述了相应的 MIG,并提供该组的任何自动扩缩功能的相关信息:

gcloud compute instance-groups managed describe example-managed-instance-group

Terraform

您必须先创建 MIG,然后才能启用自动扩缩功能。请按照说明执行以下操作:创建 MIG 并将虚拟机限制在单个可用区创建 MIG 并使其虚拟机分布在一个区域内的多个可用区中

如需在 MIG 中配置自动扩缩,您可以使用 google_compute_autoscaler 资源

以下示例根据可用区级 MIG 中的 CPU 利用率配置自动扩缩。

resource "google_compute_autoscaler" "default" {
  name   = "example-autoscaler"
  zone   = "us-central1-f"
  target = google_compute_instance_group_manager.default.id

  autoscaling_policy {
    max_replicas    = 20
    min_replicas    = 0
    cooldown_period = 90

    cpu_utilization {
      target = 0.60
    }
  }
}

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

REST

在启用自动扩缩功能之前,您必须先创建 MIG 并将虚拟机限制在单个可用区,或者创建 MIG 并使其虚拟机分布在一个区域内的多个可用区中

如果您有可用区级 MIG,请向 autoscalers.insert 方法发出 POST 请求。如果您有区域级 MIG,请使用 regionAutoscalers.insert 方法

例如:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/

请求正文必须包含 nametargetautoscalingPolicy 字段。autoscalingPolicy 字段必须定义目标 cpuUtilization 值和 maxNumReplicas 值。

(可选)您可以设置 minNumReplicas,以指明该组中所需的最小虚拟机数。如果您未设置最小值,则默认情况下,MIG 会将此值设置为 2。

您可以使用 coolDownPeriodSec 字段来设置初始化期,以告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。

{
  "name": "example-autoscaler",
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
  "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
      "utilizationTarget": 0.6
    },
    "coolDownPeriodSec": 90
  }
}

如果需要,您可以启用预测性自动扩缩功能,以在预测的负载之前提前横向扩容。如需了解预测性自动扩缩是否适合您的工作负载,请参阅根据预测进行扩缩

如需详细了解如何根据 CPU 利用率启用自动扩缩功能,请参阅根据 CPU 利用率进行扩缩

后续步骤