使用期望实例数功能,弹性伸缩服务可以自动调整伸缩组内的实例数量为期望的实例数量,同时能够灵活地执行并行伸缩活动,无需人工干预。本文主要介绍期望实例数的相关信息、使用限制、实例数变化规律以及相关示例等。
期望实例数介绍
期望实例数功能可以确保伸缩组内的实例数量能够自动维持在期望设定的实例数。如果已为伸缩组设置了期望实例数,当伸缩组当前组内实例数不等于期望实例数时,弹性伸缩服务会自动进行扩缩容动作,确保伸缩组内实例数量始终等于设置好的期望实例数,不需要人工进行干预。
功能优势
相比未设置期望实例数的伸缩组,设置期望实例数功能后,伸缩组利用率提升,伸缩活动的执行也更自动化,即可以有效解决如下问题。
关于设置期望实例数伸缩组与未设置期望实例数伸缩组的区别,更多信息,请参见与未设置期望实例数伸缩组的区别。
未设置期望实例数的伸缩组,当存在执行中的伸缩活动时,不能执行新的伸缩活动,伸缩组利用率低。
例如,如果伸缩组进行扩缩容活动时,健康检查触发的伸缩活动就无法执行。
未设置期望实例数的伸缩组,当伸缩活动执行失败时,需要手动重试。
开启或关闭期望实例数功能
您可以通过以下途径开启或关闭期望实例数功能:
新建伸缩组时或者修改已创建伸缩组时,您都可以设置组内期望实例数参数值即可自动开启期望实例数功能。具体操作,请参见配置伸缩组。
说明伸缩组设置(开启)期望实例数功能后,您可以根据实际需要修改伸缩组当前的期望实例数。
已设置(开启)期望实例数的伸缩组支持通过API方式来关闭期望实例数功能,更多信息,请参见ModifyScalingGroup - 修改一个伸缩组。
基本概念
使用期望实例数功能前,请您了解以下概念:
概念 | 说明 |
稳态实例 | 伸缩组中处于服务中、保护中和备用中状态的实例。 |
并行伸缩活动 | 存在执行中的并行伸缩活动时,可以执行其他并行伸缩活动。包括通过以下方式触发的伸缩活动:
|
非并行伸缩活动 | 存在执行中的非并行伸缩活动时,不能执行其他伸缩活动。并行伸缩活动以外的伸缩活动均属于非并行伸缩活动。包括但不限于通过以下方式触发的伸缩活动:
|
使用限制
已设置期望实例数的伸缩组不支持同时执行并行伸缩活动和非并行伸缩活动。
期望实例数必须小于或等于伸缩组内最大实例数,且必须大于或等于伸缩组内最小实例数。
期望实例数变化规则
除手动设定期望实例数外,执行伸缩活动也可能导致期望实例数变化,具体变化情况和伸缩活动触发方式有关。
伸缩活动类型 | 伸缩活动触发方式 | 伸缩活动效果 | 期望实例数变化 | 示例 |
并行伸缩活动 | 手动执行伸缩规则 | 只修改期望实例数,等待期望实例数检查任务触发扩缩容。 | 稳态实例数±扩缩容数量 | 场景:
结果: 期望实例数变为6台,但不会立即创建ECS实例,等待期望实例数检查任务触发扩缩容。 |
通过定时任务执行伸缩规则 | 只修改期望实例数,等待期望实例数检查任务触发扩缩容。 | 稳态实例数±扩缩容数量 | 场景:
结果: 期望实例数变为6台,但不会立即创建ECS实例,等待期望实例数检查任务触发扩缩容。 | |
手动添加实例 | 直接触发扩容,然后修改期望实例数。 | 当前期望实例数+扩容数量 | 场景:
结果: 4台ECS实例加入伸缩组,稳态实例数变为6台,然后期望实例数变为7台。 | |
手动移出实例 | 直接触发缩容,然后修改期望实例数。 | 当前期望实例数-缩容数量 | 场景:
结果: 1台ECS实例移出伸缩组,稳态实例数变为1台,然后期望实例数变为2台。 | |
最大最小值检查任务 | - | 需要手动设定期望实例数 | 场景:
结果: 修改失败,您需要同时设定期望实例数。 | |
实例健康检查任务 | 直接触发缩容。 | 期望实例数不变 | 场景:
结果: 期望实例数不变,不健康的ECS实例被移出伸缩组,稳态实例数变为1台。伸缩组检测到期望实例数和稳态实例数间存在差距,会自动执行期望实例数检查任务,触发伸缩活动创建2台ECS实例。 | |
期望实例数检查任务 | 直接触发扩缩容。 | 期望实例数不变 | 场景:
结果: 期望实例数不变。伸缩组检测到期望实例数和稳态实例数间存在差距,会自动执行期望实例数检查任务,触发伸缩活动创建1台ECS实例。 | |
非并行伸缩活动 | 通过报警任务执行伸缩规则 | 直接触发扩缩容,然后修改期望实例数。 | 稳态实例数±扩缩容数量 | 场景:
结果: 触发伸缩活动创建4台ECS实例,然后期望实例数变为6台。 |
与未设置期望实例数伸缩组的区别
设置期望实例数伸缩组与未设置期望实例数伸缩组的主要区别如下所示:
对比项 | 设置期望实例数伸缩组 | 未设置期望实例数伸缩组 |
维护成本 | 自动维护:伸缩组会自动扩缩容以满足期望实例数,如果伸缩活动失败,系统也会自动重试。 | 手动维护:您需要自行手动维护伸缩组内实例数,如果伸缩活动失败,您也需要手动进行重试。 |
伸缩活动执行结果 | 根据伸缩活动触发方式不同,伸缩组中伸缩活动的执行结果也不同:
| 手动执行伸缩规则、通过定时任务执行伸缩规则、手动添加实例、手动移出或删除实例、通过报警任务执行伸缩规则时,伸缩组直接触发扩缩容动作来添加或者移出实例。 |
并行执行功能 | 伸缩组支持并行执行伸缩活动功能,更多信息,请参见并行伸缩活动示例。 | 伸缩组同一时间只支持一个伸缩活动,伸缩活动执行可能比较耗时,在此期间,您无法调整伸缩组的实例数。 |
并行伸缩活动示例
指定期望实例数后,伸缩组支持同时执行并行伸缩活动,示例如下:
示例1:连续手动执行伸缩规则
场景:
期望实例数:3台。
稳态实例数:3台。
伸缩规则add3要求创建3台ECS实例。
伸缩规则add1要求创建1台ECS实例。
手动执行add3,然后立即手动执行add1。
结果:执行add3后,期望实例数从3台变为6台。可以立即执行add1,期望实例数从6台变为4台。并行伸缩活动的效果是创建1台ECS实例,伸缩活动结束后,伸缩组的稳态实例数为4台。
示例2:手动执行伸缩规则的同时手动添加实例
场景:
期望实例数:3台。
稳态实例数:3台。
伸缩规则add1要求创建1台ECS实例。
手动执行add1,然后立即手动添加1台已有ECS实例。
结果:执行add1后,期望实例数从3台变为4台。可以立即添加已有ECS实例,期望实例数从4台变为5台。并行伸缩活动的效果是创建1台ECS实例并添加1台已有ECS实例,伸缩活动结束后,伸缩组的稳态实例数为5台。
非并行伸缩活动示例
指定期望实例数后,伸缩组不支持同时执行并行伸缩活动和非并行伸缩活动,示例如下:
场景:
期望实例数:1台。
稳态实例数:1台。
报警任务伸缩规则要求创建3台ECS实例。
伸缩规则add1要求创建1台ECS实例。
报警任务触发后立即手动执行add1。
结果:报警任务触发伸缩活动,期望实例数从1台变为4台。由于报警任务触发的伸缩活动属于非并行伸缩活动,不支持立即执行并行伸缩活动,伸缩规则add1被拒绝执行,期望实例数仍为4台。非并行伸缩活动的效果是创建3台ECS实例,伸缩活动结束后,伸缩组的稳态实例数为4台。