根据 CPU 利用率进行扩缩

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

您还可以根据外部 HTTP(S) 负载平衡器的服务容量Monitoring 指标来扩缩 MIG。

准备工作

根据 CPU 利用率进行扩缩

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

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

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

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

控制台

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

    转到“实例组”

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

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

  4. 自动扩缩模式下,选择自动扩缩以启用自动扩缩。

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

    1. 点击添加新指标
    2. 指标类型下,选择 CPU 利用率
    3. 输入所需的目标 CPU 利用率。此值被视为百分比。例如,如果 CPU 利用率为 75%,请输入 75
    4. 点击完成
  6. 预测性自动扩缩下,选择关闭。如需详细了解预测性自动扩缩以及它是否适合您的工作负载,请参阅使用预测性自动扩缩

  7. 冷却期下,指定您的应用在新实例上初始化所需的时间。在实例启动后,自动扩缩器在开始从该实例收集信息之前将等待此秒数。这计入了应用初始化可能需要的时间,在这段时间内收集的数据对于自动扩缩而言并不可靠。默认冷却期为 60 秒。

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

  9. 点击保存

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 参考

API


注意:虽然自动扩缩是代管式实例组的功能,但它是单独的 API 资源。针对自动扩缩构建 API 请求时请记住这一点。

在 API 中,向 autoscalers.insert 方法发出 POST 请求:

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%。

后续步骤