使用多个政策

创建使用多个政策的自动调节程序,自动调节程序将根据在组中提供最多虚拟机数量的政策进行调节。这可确保始终有足够的虚拟机来处理应用工作负载,并且可以调节具有多个可能瓶颈的应用。

准备工作

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

自动调节程序处理多个政策的方式如下:计算每个政策的建议虚拟机数量,然后选择在组中保留最多虚拟机数量的政策。

自动调节程序可以为每个指标类型处理一个政策,Stackdriver 监控指标除外;您可以为 Stackdriver 监控指标最多选择五个政策。例如,您可以创建使用一个 CPU 利用率政策、一个负载平衡政策和最多五个自定义指标政策的自动调节程序。

例如,如果您定义了具有以下所有政策定义的自动调节程序:

  • cpuUtilization,目标为 0.8。
  • loadBalancingUtilization,目标为 0.6。
  • metric1 的 customMetricUtilization,目标为 1000。
  • metric2 的 customMetricUtilization,目标为 2000。

自动调节程序为包含 10 个虚拟机的托管实例组测量出以下平均值:

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

通过使用这些平均值,自动调节程序根据每个政策计算建议的虚拟机数量更改:

  • 根据 CPU 利用率计算的结果为 7 个虚拟机。
  • 根据负载平衡利用率计算的结果为 7 个虚拟机。
  • 根据 metric1 计算的结果为 11 个虚拟机。
  • 根据 metric2 计算的结果为 14 个虚拟机。

鉴于此自动调节程序有多个政策,自动调节程序会选择最大的建议值(在本例中为 14 个虚拟机),并将托管实例组调整为 14 个虚拟机。

创建使用多个政策的自动调节程序

创建使用多个政策的自动调节程序的过程略有不同,具体取决于您使用的是 gcloud 命令行工具还是 API。

Console


  1. 转到“实例组”页面
  2. 从列表中选择所需的实例组,然后点击修改
  3. 自动扩缩程序下的实例组详情页面上,从下拉菜单中选择开启以启用自动扩缩功能。
  4. 自动调节的依据部分,从下拉菜单中选择多项指标

    有关选择多个政策的屏幕截图

  5. 如果需要,请填写 CPU 利用率和负载平衡利用率的字段。

  6. 要添加自定义指标政策,请点击目标监控指标部分下的 + 图标,然后填写自定义指标政策的字段。

    显示自定义指标的屏幕截图

    您可以通过点击 + 图标添加多个自定义指标政策。

gcloud


要创建使用多个政策的自动扩缩程序,请使用相应的命令行标志传入多个政策规范。以下命令创建使用 CPU 利用率和两个自定义指标的自动扩缩程序:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --target-cpu-utilization 0.8 \
    --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/path/to/metric1,utilization-target=1000.0,utilization-target-type=GAUGE \
    --custom-metric-utilization metric=custom.cloudmonitoring.googleapis.com/path/to/metric2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
    --max-num-replicas 50

除自定义指标标志外,每个指标类型最多只能传入一个标志。

对于自定义指标,您可以通过重复使用以下标志来提供多个自定义指标:

--custom-metric-utilization metric=METRIC,utilization-target=TARGET,utilization-target-type=TYPE

API


在 API 中,发出 POST 请求,并在请求正文中包含所有需要的政策:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "customMetricUtilizations":[
      {
        "metric": "custom.cloudmonitoring.googleapis.com/path/to/metric1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "custom.cloudmonitoring.googleapis.com/path/to/metric2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
    }
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/example-managed-instance-group",
  "name": "example-autoscaler"
}
此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档