根据 CPU 利用率进行扩缩


最简单的自动扩缩形式是根据代管实例组 (MIG) 实例的 CPU 利用率进行扩缩。

您还可以根据负载均衡服务容量Monitoring 指标时间表来自动扩缩 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. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

根据 CPU 利用率进行扩缩

您可以根据托管实例组 (MIG) 的平均 CPU 利用率进行自动扩缩。如果您使用此政策,则是在指示自动扩缩程序收集组中实例的 CPU 利用率并确定是否需要对实例组进行扩缩。您可以设置自动扩缩程序应该维持的目标 CPU 利用率,而自动扩缩程序将尽力维持在这一水平。

自动扩缩程序将目标 CPU 利用率水平视为实例组中所有 vCPU 在一段时间内的平均使用率的一小部分。如果您的所有 vCPU 的平均利用率超过目标利用率,则自动扩缩程序将添加更多虚拟机实例。如果您的所有 vCPU 的平均利用率超过目标利用率,则自动扩缩程序将移除部分实例。例如,如果将目标利用率设置为 0.75,则是在指示自动扩缩程序将实例组中的所有 vCPU 的平均利用率维持在 75%。

您还可以根据预测的 CPU 利用率进行扩缩。如需了解详情并查看这是否适合于您的工作负载,请参阅根据预测进行扩缩

根据 CPU 利用率启用自动扩缩

控制台

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

    转到“实例组”

  2. 如果您有实例组,请选择该实例组,然后点击修改。如果您没有实例组,请点击创建实例组

  3. 如果不存在自动扩缩配置,请在自动扩缩下点击配置自动扩缩

  4. 自动扩缩模式下,选择开启:在实例组中添加和移除实例以启用自动扩缩功能。

  5. 指定您希望自动扩缩器在此组中创建的实例数量下限和上限。

  6. 自动扩缩信号部分中,如果现有的 CPU 利用率指标尚不存在,请添加一项指标:

    1. 点击添加信号
    2. 信号类型下拉菜单中,选择 CPU 利用率
    3. 输入所需的目标 CPU 利用率。此值被视为百分比。例如,如果 CPU 利用率为 75%,请输入 75
    4. 预测性自动扩缩下,选择关闭。如需详细了解预测性自动扩缩以及它是否适合您的工作负载,请参阅根据预测进行扩缩
    5. 点击完成
  7. 您可以使用初始化期来告知自动扩缩器应用初始化所需的时间。指定准确的初始化期可以改进自动扩缩器的决策。例如,扩容时,自动扩缩器会忽略仍在初始化的虚拟机中的数据,因为这些虚拟机可能尚未代表应用的正常使用情况。默认初始化期为 60 秒。

  8. 点击保存

gcloud

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

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

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

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

您可以使用 instance-groups managed describe 子命令验证是否已成功启用自动扩缩,此子命令用于描述相应的托管式实例组并提供有关该实例组的任何自动扩缩功能的信息:

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

如需查看可用的 gcloud 命令和标志,请参阅 gcloud 参考

REST

如需创建自动扩缩器,请使用 autoscalers.insert 方法(针对可用区级 MIG)或 regionAutoscalers.insert 方法(针对区域级 MIG)。

以下示例将为可用区级 MIG 创建自动扩缩器:

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

请求正文必须包含 nametargetautoscalingPolicy 字段。autoscalingPolicy 必须定义 cpuUtilizationmaxNumReplicas

您可以使用 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 利用率非常高的情况

在 CPU 利用率很高的时间段内,如果利用率接近 100%,则自动扩缩器会预估该组可能已经严重过载。在这种情况下,自动扩缩器最多将虚拟机的数量增加 50%。

后续步骤