弹性伸缩的目标追踪规则是弹性伸缩服务与云监控深度结合的产物,定义了更加稳定、精准、快速的弹性伸缩策略,可以解决当前伸缩组动态调整过程存在的一些难点和问题(例如用户流量突增或硬件出现故障等突发事件),能快速实现伸缩组的自动扩缩容,确保系统的稳定性和可用性。
概念介绍
弹性伸缩的目标追踪规则是在简单规则的基础上扩展出来的一种新类型的伸缩规则,您可以根据需要选择一项云监控指标,并指定监控指标的目标值,弹性伸缩会自动计算所需的实例数量并进行扩缩容,从而将云监控指标更高效、更准确地维持在目标值附近。
弹性伸缩支持步进规则、预测规则、简单规则、目标追踪规则四种伸缩规则类型,更多信息,请参见伸缩规则概述。
支持的监控项和功能设置
支持的监控项
在使用目标追踪规则时,对可选的云监控指标有一定限制,指标必须是有效的使用率指标,能够正确反映伸缩组内实例整体的繁忙程度,并且指标值需要根据伸缩组内实例数量的变化而相应地增加或减少。
满足上述条件的监控指标适合应用于目标追踪规则,不同类型的伸缩组,其目标追踪规则支持的云监控指标不同:
ECS类型的伸缩组
API监控指标
控制台监控指标
CpuUtilization
(ECS)平均CPU使用率
IntranetRx
(ECS)内网入流量的平均值
IntranetTx
(ECS)内网出流量的平均值
ClassicInternetRx/VpcInternetRx
(ECS)公网入流量的平均值
说明如果伸缩组的网络类型为经典网络,则此处的(ECS)公网入流量的平均值指的是(ECS)经典网络公网入流量的平均值。
如果伸缩组的网络类型为专有网络,则此处的(ECS)公网入流量的平均值指的是(ECS)VPC网络公网入流量的平均值。
ClassicInternetTx/VpcInternetTx
(ECS)公网出流量的平均值
说明如果伸缩组的网络类型为经典网络,则此处的(ECS)公网出流量的平均值指的是(ECS)经典网络公网出流量的平均值。
如果伸缩组的网络类型为专有网络,则此处的(ECS)公网出流量的平均值指的是(ECS)VPC网络公网出流量的平均值。
MemoryUtilization
(Agent)内存
表示通过云监控客户端采集的内存使用率指标。
LoadBalancerRealServerAverageQps
(ALB)服务器组单机QPS
说明选择该云监控指标后,您还需要选择相应的ALB服务器组。
ECI类型的伸缩组
API监控指标
控制台监控指标
EciPodCpuUtilization
CPU使用率
EciPodMemoryUtilization
内存
LoadBalancerRealServerAverageQps
(ALB)服务器组单机QPS
说明选择该云监控指标后,您还需要选择相应的ALB服务器组。
支持的功能设置
禁用缩容:如果不想使用目标追踪规则的自动删除实例功能,可以通过开启禁用缩容功能来实现。
开启禁用缩容功能,您可以通过在弹性伸缩控制台的创建伸缩规则页面,单击禁用缩容参数后的按钮来实现;也可以通过调用API CreateScalingRule参数,设置DisableScaleIn为true来实现。
开启禁用缩容功能后,伸缩组的目标追踪规则只能创建一条用于扩容的报警任务,不会创建或者删除一条用于缩容的报警任务。通过该功能,您可以使用其他方式控制伸缩组的缩容过程。例如,您可以通过报警任务监控其他指标,触发一条简单规则用于缩容操作。
关闭禁用缩容功能后,伸缩组的目标追踪规则会同时创建一条用于扩容的报警任务和一条用于缩容的报警任务。
实例预热时间:指新添加的实例所需要的预热时间,在预热时间段内,该实例不影响伸缩组的监控指标。
新实例加入伸缩组后,通常需要经历业务部署、负载均衡健康检查、数据采集等过程,才能上报稳定的监控数据,此过程中不适合触发新的伸缩活动。为了限制扩缩容过程执行的频率,伸缩组提供了对伸缩规则设置合适的实例预热时间,在此期间伸缩组会拒绝执行伸缩规则。
实例的预热阶段主要体现在以下几点:
实例预热结束前,可正常加入伸缩组,但实例不会向云监控上报数据,云监控在聚合伸缩组上报的监控指标时会忽略伸缩组内的预热实例,不会将预热实例作为伸缩组内的实例。
实例预热结束后,将开始向云监控上报数据,云监控在此时会将该实例作为伸缩组内的实例。
伸缩组在扩容过程中,加入伸缩组的预热实例不会做为扩容实例的基数。
例如,当前组内实例数量为2个,伸缩组触发扩容活动后添加5个实例到伸缩组,预热时间设置为300秒,在实例预热期间,伸缩组再次触发扩容活动后,仍按照实例数量为2个作为扩容实例的基数。
伸缩组在缩容过程中,会自动根据历史执行情况设置合适的默认冷却时间,避免加入伸缩组的预热实例因数据延迟而引起连续缩容活动,而导致伸缩组内的实例被过多释放。
与简单规则对比
目标追踪规则与简单规则对比如下所示:
对比项 | 简单规则 | 目标追踪规则 |
用户参与度 | 用户参与度高。 您可以根据实际需要自定义扩缩容活动,使您真正实现按需使用的目标。但您需要关注具体的扩缩容活动、期望目标值等。 | 用户参与度低。 将扩缩容方法和扩缩容时间两者定义整合在一起,您可以查看到监控指标值,且只需要关注监控指标的目标值即可。 |
调整粒度 | 调整粒度固定。 您可以自定义具体的扩缩容操作,但无法感知监控指标的实际状态,您只能够根据经验来设置一个固定的伸缩规则,其调整过程粒度无法实现动态调整。 | 调整粒度精准。 目标追踪伸缩规则增加了对监控数据的感知能力,根据历史的监控数据值和期望目标值计算出所需要的扩缩容实例数,使用尽量少的调整过程接近目标值,实现快速、精准、动态的扩缩容活动。 |
调整过程 | 调整过程缺乏控制。主要体现在以下几点:
| 调整过程控制灵活,主要体现在以下几点:
|
创建目标追踪规则
注意事项
在创建目标追踪规则前,您需要注意以下几点:
一个伸缩组内创建目标追踪规则时,同一指标类型对应的目标追踪规则只能存在一个。
创建目标追踪规则时,会自动创建2条云监控报警任务。
报警任务不支持修改与删除,只能进行查看、停用或启用操作。如需删除报警任务,请删除对应的目标追踪规则即可。
2条云监控报警任务采用相对激进的扩容策略和相对保守的缩容策略,分别用于扩容活动和缩容活动。
例如,如果伸缩组的扩容报警任务采样间隔为60秒,报警任务连续3分钟满足阈值条件时,则进行扩容活动;如果伸缩组的缩容报警任务采样间隔为60秒,报警任务连续15分钟满足阈值条件时,则进行缩容活动。
发生报警时,伸缩组将触发对应的扩缩容活动,弹性伸缩会根据监控指标的历史数据计算扩缩容过程中实例的数量。对于扩容活动来说,需要增加的实例数量采取向上取整,避免扩容的实例数量不足;对于缩容活动来说,需要移出的实例数量采取向下取整,避免释放过多的实例数量。
例如,如果伸缩组需要增加实例个数为1.5个时,实际伸缩组将增加2个实例;如果伸缩组需要移出的实例个数为1.5个时,实际伸缩组将减少1个实例。
如果监控数据指标不足时,伸缩组将不会触发扩缩容活动。
如果伸缩组内的实例数量较少时,可能会存在监控指标值与目标值存在较大的差距。此时,伸缩组内的实例数量的变化对伸缩组聚合指标值具有较大的影响。
例如,如果在缩容过程中报警规则一直处于报警状态,却没有发生缩容活动。这种情况主要是因为缩容过程计算得到的缩容实例数量少于1个,因此不会产生实际的伸缩活动。
操作步骤
您可以通过弹性伸缩控制台或者调用API两种方式来创建伸缩组的目标追踪规则。
控制台方式:选择需要创建的伸缩组,创建目标追踪规则的更多操作,请参见配置伸缩规则。
API方式:调用API CreateScalingRule参数创建目标追踪规则,更多操作,请参见CreateScalingRule。