创建具有多个信号的自动扩缩政策后,自动扩缩器会根据在托管式实例组 (MIG) 中提供最多虚拟机实例的信号进行扩缩。这可确保始终有足够的虚拟机来处理应用工作负载,并且可让您扩缩具有多个可能瓶颈的应用。
如需详细了解不同类型的自动扩缩信号,请参阅自动扩缩政策。
准备工作
- 了解自动扩缩器基础知识。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
cpuUtilization
,目标为 0.8loadBalancingUtilization
,目标为 0.6- metric1 的
customMetricUtilization
,目标为 1000 - metric2 的
customMetricUtilization
,目标为 2000 scalingSchedules
- 每个周六和周日,从零点开始的 24 小时内至少有 6 个虚拟机
- 每个周一到周五,从上午 9:00 开始的 8 小时内至少有 15 个虚拟机
- CPU 利用率为 0.5
- 负载均衡利用率为 0.4
- metric1 为 1100
- metric2 为 2700
- 根据 CPU 利用率计算的结果为 7 个虚拟机
- 根据负载均衡利用率计算的结果为 7 个虚拟机
- 根据 metric1 计算的结果为 11 个虚拟机
- 根据 metric2 计算的结果为 14 个虚拟机
- 根据第一个扩缩时间表,每个周六和周日,全天有 6 个虚拟机
- 根据第二个扩缩时间表,每个周一到周五,从上午 9:00 到下午 5:00 有 15 个虚拟机
在 Google Cloud 控制台中,转到实例组页面。
点击列表中 MIG 的名称。 然后,点击修改。
在自动扩缩模式下的修改页面上,从下拉菜单中选择开启:在实例组中添加和移除实例,以开启自动扩缩。
在实例数下限下,输入您希望此 MIG 具有的虚拟机数量下限。无论其自动扩缩信号是什么,此 MIG 的大小下限始终保持不变。
在实例数上限下,输入您希望此 MIG 具有的虚拟机数量上限。无论其自动扩缩信号生成的建议大小是多少,此 MIG 的大小都不会超出该上限。
对于要添加的每个基于指标的自动扩缩信号,请在自动扩缩信号下,点击添加信号。
- 如需根据平均 CPU 利用率创建自动扩缩信号,请在信号类型下拉菜单中选择 CPU 利用率。然后,输入目标 CPU 利用率,然后点击完成。如需了解详情,请参阅根据 CPU 利用率进行扩缩。
- 如需根据 HTTP 负载均衡服务容量创建自动扩缩信号,请在信号类型下拉菜单中选择 HTTP 负载均衡利用率。然后,输入目标 HTTP 负载均衡利用率并点击完成。如需了解详情,请参阅根据负载平衡服务容量进行扩缩。
- 如需根据 Cloud Monitoring 指标创建自动扩缩信号,请在信号类型下拉菜单中选择 Cloud Monitoring 指标。然后,填写剩余字段并点击完成。如需了解详情,请参阅根据 Cloud Monitoring 指标进行扩缩。
对于要添加的每个基于时间表的自动扩缩信号,请展开自动扩缩时间表部分,点击管理时间表,然后点击创建时间表。
在新的创建扩缩时间表窗格中,填写必填字段,然后点击保存。然后,在扩缩时间表窗格中,点击完成。如需了解详情,请参阅根据时间表进行扩缩。
在初始化期下,输入应用初始化需要的秒数,初始化期是为了让虚拟机完成初始化,然后自动扩缩器才会将其使用情况数据视为可靠。如需了解详情,请参阅初始化期。
可选:如需启用缩容控制机制,请点击缩容控制机制,然后选择启用缩容控制机制复选框。如需了解详情,请参阅缩容控制机制。
点击保存。
MIG_NAME
:MIG 的名称。PATH_TO_CUSTOM_METRIC_1
和PATH_TO_CUSTOM_METRIC_2
:可选:自定义指标的路径,其格式类似于custom.cloudmonitoring.googleapis.com/path/to/metric1
和custom.cloudmonitoring.googleapis.com/path/to/metric2
。如需了解详情,请参阅自定义指标。PROJECT
:您的项目 ID。ZONE
:您的 MIG 所在的可用区。MIG_NAME
:MIG 的名称。PATH_TO_CUSTOM_METRIC_1
和PATH_TO_CUSTOM_METRIC_2
:可选:自定义指标的路径,其格式类似于custom.cloudmonitoring.googleapis.com/path/to/metric1
和custom.cloudmonitoring.googleapis.com/path/to/metric2
。如需了解详情,请参阅自定义指标。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
自动扩缩器如何处理多个信号
自动扩缩器处理多个信号的方式如下:计算每个信号的建议虚拟机数量,然后选择在 MIG 中保留最多虚拟机的信号。
自动扩缩器可以为每个指标类型处理一个信号,Cloud Monitoring 指标和扩缩时间表除外。您最多可以为 Cloud Monitoring 指标选择 5 个自动扩缩信号,并为每个 MIG 创建最多 128 个时间表。例如,您可以创建一个自动扩缩器,该自动扩缩器最多使用 1 个 CPU 利用率信号、1 个负载均衡信号、5 个自定义指标信号,以及 128 个扩缩时间表。
例如,您可以定义使用以下所有信号的自动扩缩器:
在此示例中,假设自动扩缩器为在测量时包含 10 个虚拟机的 MIG 测量出以下利用率平均值:
使用上述值,自动扩缩器根据每个信号计算建议的虚拟机数量:
自动扩缩器会选择计算出 MIG 中虚拟机数量最多的信号,并将 MIG 的建议大小设置为该值。在本例中,如果当前第二个时间表有效,自动扩缩器会将 MIG 大小调整为 15 个虚拟机,否则调整为 14 个虚拟机。
创建具有多个信号的自动扩缩器
根据您使用的是 Google Cloud 控制台、gcloud CLI 还是 REST,创建具有多个信号的自动扩缩器的方式略有不同。
控制台
gcloud
如需创建具有多个信号的自动扩缩器,请使用
set-autoscaling
命令。使用相应的命令行标志传入多个信号规范。例如,以下命令会创建一个自动扩缩器,该自动扩缩器使用 CPU 利用率、负载均衡服务容量、两个自定义指标和一个扩缩时间表。
--max-num-replicas
和--min-num-replicas
标志限制了 MIG 大小的上限和下限。gcloud 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
请替换以下内容:
除自定义指标标志外,在每个
gcloud
命令中最多只能为每个指标类型传入一个标志。对于自定义指标,您可以通过重复使用--custom-metric-utilization
标志,在单个命令中提供多个自定义指标。如需详细了解如何为每种类型的自动扩缩信号配置标志,请参阅以下页面:
REST
如需创建自动扩缩器,请使用
autoscalers.insert
方法(针对可用区级 MIG)或regionAutoscalers.insert
方法(针对区域级 MIG)。例如,以下请求会创建一个使用 CPU 利用率、负载均衡服务容量、两个自定义指标和两个扩缩时间表的自动扩缩器。
maxNumReplicas
和minNumReplicas
字段限制了 MIG 大小的上限和下限。POST https://compute.googleapis.com/compute/v1/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" }
请替换以下内容:
如上例所示,您可以在同一请求中提供多个自定义指标和扩缩时间表。
如需详细了解如何为每种类型的自动扩缩信号配置字段,请参阅以下页面:
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-