根据 CPU 利用率进行扩缩

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

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

准备工作

根据 CPU 利用率进行扩缩

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

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

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

控制台


  1. 转到实例组页面
  2. 如果您有实例组,请选择该实例组,然后点击修改组。如果您没有实例组,请点击创建实例组
  3. 自动扩缩下,选择开启
  4. 自动扩缩的依据下,选择 CPU 利用率
  5. 输入希望的目标 CPU 利用率。此值被视为百分比。例如,如果 CPU 利用率为 60%,请输入 60
  6. 提供您要包含在此实例组中的实例数上限。您还可以设置实例数下限和冷却期。冷却期是指在虚拟机启动后,自动扩缩程序在开始从虚拟机收集信息之前应该等待的秒数。这计入了虚拟机初始化可能需要的时间,在这段时间内收集的数据对于自动扩缩而言并不可靠。默认冷却期为 60 秒。
  7. 保存更改。

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