根据 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 中,向 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%。

后续步骤