使用多项政策

当您创建使用多个政策的自动扩缩器后,自动扩缩器会根据提供了最大的代管式实例组 (MIG) 虚拟机实例数量的那一个政策来进行扩缩。这可确保始终有足够的虚拟机来处理应用工作负载,并且可让您扩缩具有多个可能瓶颈的应用。

如需详细了解不同类型的自动扩缩政策,请参阅政策

准备工作

自动调节程序如何处理多个政策

自动扩缩器处理多个政策的方式如下:计算每个政策的建议虚拟机数量,然后选择计算出最大 MIG 虚拟机数量的政策。

自动扩缩器可以为每个指标类型处理一个政策,Cloud Monitoring 指标和扩缩时间表(预览版)除外。您最多可以为 Cloud Monitoring 指标选择 5 个政策,并为每个 MIG 创建最多 128 个时间表。例如,您可以创建这样一个自动扩缩器,它最多可以使用 1 个 CPU 利用率政策、1 个负载平衡政策、5 个自定义指标政策和 128 个扩缩时间表。

例如,您可以定义一个具有以下所有政策定义的自动扩缩器:

  • cpuUtilization,目标为 0.8
  • loadBalancingUtilization,目标为 0.6
  • metric1 的 customMetricUtilization,目标为 1000
  • metric2 的 customMetricUtilization,目标为 2000
  • scalingSchedules
    • 每个周六和周日,从零点开始的 24 小时内至少有 6 个虚拟机
    • 每个周一到周五,从上午 9:00 开始的 8 小时内至少有 15 个虚拟机

对于这些政策,假设自动扩缩器为在测量时包含 10 个虚拟机的 MIG 测量出以下利用率平均值:

  • CPU 利用率为 0.5
  • 负载平衡利用率为 0.4
  • metric1 为 1100
  • metric2 为 2700

自动扩缩器使用这些值根据每个政策计算建议的虚拟机数量:

  • 根据 CPU 利用率计算的结果为 7 个虚拟机
  • 根据负载平衡利用率计算的结果为 7 个虚拟机
  • 根据 metric1 计算的结果为 11 个虚拟机
  • 根据 metric2 计算的结果为 14 个虚拟机
  • 根据第一个扩缩时间表,每个周六和周日,全天有 6 个虚拟机
  • 根据第二个扩缩时间表,每个周一到周五,从上午 9:00 到下午 5:00 有 15 个虚拟机

自动扩缩器会选择计算出 MIG 中虚拟机数量最多的政策,并将 MIG 的建议大小设置为该值。在本例中,如果当前第二个时间表有效,自动扩缩器会将 MIG 大小调整为 15 个虚拟机,否则调整为 14 个虚拟机。

创建使用多个政策的自动扩缩器

根据您使用的是 Cloud Console、gcloud 工具还是 Compute Engine API,创建使用多个政策的自动扩缩器的过程会略有不同。

控制台

  1. 在 Cloud Console 中,转到实例组页面。

    转到“实例组”

  2. 点击列表中的 MIG 名称。然后点击修改组

  3. 自动扩缩模式下的修改页面上,从下拉菜单中选择自动扩缩,以开启自动扩缩。

  4. 对于要添加的每个基于指标的自动扩缩政策,请在自动扩缩政策下点击添加新指标

    • 如需根据平均 CPU 利用率创建自动扩缩政策,请在指标类型下拉菜单中选择 CPU 利用率。然后,输入目标 CPU 利用率,然后点击完成。如需了解详情,请参阅根据 CPU 利用率进行扩缩
    • 如需根据 HTTP 负载平衡服务容量创建自动扩缩政策,请在指标类型下拉菜单中选择 HTTP 负载平衡利用率。然后,输入目标 HTTP 负载平衡利用率并点击完成。如需了解详情,请参阅根据负载平衡服务容量进行扩缩
    • 如需根据 Cloud Monitoring 指标创建自动扩缩政策,请在指标类型下拉菜单中选择 Stackdriver Monitoring。然后,填写剩余字段并点击完成。如需了解详情,请参阅根据 Cloud Monitoring 指标进行扩缩
  5. 对于您要添加的每个基于时间安排的自动扩缩政策,请在自动扩缩政策下,点击添加新的扩缩时间表

    在新的创建时间表窗格中,填写必填字段,然后点击保存。然后,在扩缩时间表窗格中,点击完成。如需了解详情,请参阅根据时间表进行扩缩

  6. 冷却期下,输入应用初始化需要的秒数,冷却期是为了让虚拟机完成初始化,然后自动扩缩器可以开始从虚拟机收集使用情况信息。如需了解详情,请参阅冷却期

  7. 实例数下限下,输入您希望此 MIG 具有的虚拟机数量下限。无论其自动扩缩政策生成的建议大小是多少,此 MIG 的大小下限始终保持不变。

  8. 实例数上限下,输入您希望此 MIG 具有的虚拟机数量上限。无论其自动扩缩政策生成的建议大小是多少,此 MIG 的大小都不会超出该上限。

  9. 可选:如需启用缩减控制机制,请选中启用缩减控制机制复选框。如需了解详情,请参阅缩减控制机制

  10. 点击保存

gcloud

要创建使用多个政策的自动扩缩器,请使用它们相应的命令行标志传入多个政策规范。如果您要创建包含扩缩时间表的自动扩缩器,请使用 gcloud beta compute instance-groups managed set-autoscaling 命令。否则,请使用 gcloud compute instance-groups managed set-autoscaling 命令。

例如,以下命令会创建一个自动扩缩器,该自动扩缩器使用 CPU 利用率、负载平衡服务容量、两个自定义指标和一个扩缩时间表。--max-num-replicas--min-num-replicas 标志限制了 MIG 大小的上限和下限,无论每个政策的建议大小为何。

gcloud beta compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
   --min-num-replicas=1
   --max-num-replicas=50

请替换以下内容:

  • MIG_NAME:MIG 的名称。
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2:可选:自定义指标的路径,其格式类似于 custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2。如需了解详情,请参阅自定义指标

除自定义指标标志外,在每个 gcloud 命令中最多只能为每个指标类型传入一个标志。对于自定义指标,您可以通过重复使用 --custom-metric-utilization 标志,在单个命令中提供多个自定义指标。

如需详细了解如何为每种类型的自动扩缩政策配置标志,请参阅以下页面:

API

如需创建自动扩缩器,请使用 autoscalers.insert 方法(针对可用区级 MIG)或 regionAutoscalers.insert 方法(针对区域级 MIG)。如果您要创建包含扩缩时间表的自动扩缩器,则必须使用 Beta 版 autoscalers.insert 方法(针对可用区级 MIG)或 Beta 版 regionAutoscalers.insert 方法(针对区域级 MIG)。

例如,以下请求会创建一个使用 CPU 利用率、负载平衡服务容量、两个自定义指标和两个扩缩时间表的自动扩缩器。maxNumReplicasminNumReplicas 字段限制了 MIG 大小的上限和下限,无论每个政策的建议大小为何。

POST https://compute.googleapis.com/compute/beta/projects/PROJECT/zones/ZONE/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

请替换以下内容:

  • PROJECT:您的项目 ID
  • ZONE:您的 MIG 所在的可用区。
  • MIG_NAME:MIG 的名称。
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2:可选:自定义指标的路径,其格式类似于 custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2。如需了解详情,请参阅自定义指标

如上例所示,您可以在同一请求中提供多个自定义指标和扩缩时间表。

如需详细了解如何为每种类型的自动扩缩政策配置字段,请参阅以下页面: