通过期望实例数功能,您可以一键设定伸缩组内的ECS实例数量,同时灵活地执行并行伸缩活动。

期望实例数介绍

新建伸缩组时,设置组内期望实例数即可自动开启期望实例数功能,已设置期望实例数的伸缩组支持再次修改期望实例数。设置伸缩组内的期望实例数后,当伸缩组内实例数不等于期望实例数时,弹性伸缩服务会自动进行扩缩容动作,确保伸缩组内始终保持该数量的实例数,不需要人工进行干预。

说明 您只能在新建伸缩组时开启期望实例数功能,而不能通过修改已有伸缩组来开启该功能。

设置期望实例数功能可以有效解决如下问题:

  • 未设置期望实例数的伸缩组,当伸缩活动执行失败时,需要手动重试。
  • 未设置期望实例数的伸缩组,当存在执行中的伸缩活动时,不能执行新的伸缩活动,伸缩组利用率低。例如,如果伸缩组进行扩缩容活动时,健康检查触发的伸缩活动就无法执行。
使用期望实例数功能前,请您了解以下概念:
概念 说明
稳态实例 伸缩组中处于服务中保护中备用中状态的实例。
并行伸缩活动 存在执行中的并行伸缩活动时,可以执行其他并行伸缩活动。包括通过以下方式触发的伸缩活动:
  • 手动执行伸缩规则、通过定时任务执行伸缩规则。
  • 手动添加实例、手动移出实例。
  • 系统自动进行的期望实例数检查任务、实例健康检查任务、最大最小值检查任务。
非并行伸缩活动 存在执行中的非并行伸缩活动时,不能执行其他伸缩活动。并行伸缩活动以外的伸缩活动均属于非并行伸缩活动。包括但不限于通过以下方式触发的伸缩活动:
  • 系统通过报警任务自动执行伸缩规则。
  • 手动在实例列表页签中执行再均衡分布。
  • 系统自动执行抢占式实例补偿任务。
    说明 创建伸缩组时,需要将多可用区扩容策略选择为成本优化策略,且开启抢占式实例补偿功能。

使用限制

  • 已设置期望实例数的伸缩组不支持置空期望实例数,即不支持关闭该功能。
  • 已设置期望实例数的伸缩组不支持同时执行并行伸缩活动和非并行伸缩活动。
  • 创建伸缩组时未设置期望实例数的伸缩组暂不支持修改期望实例数属性。
  • 期望实例数必须小于或等于伸缩组内最大实例数,且必须大于或等于伸缩组内最小实例数。

与未设置期望实例数伸缩组的区别

设置期望实例数伸缩组与未设置期望实例数伸缩组的主要区别如下所示:

对比项 设置期望实例数伸缩组 未设置期望实例数伸缩组
维护成本 自动维护:伸缩组会自动扩缩容以满足期望实例数,如果伸缩活动失败,系统也会自动重试。 手动维护:您需要自行手动维护伸缩组内实例数,如果伸缩活动失败,您也需要手动进行重试。
伸缩活动执行结果 根据伸缩活动触发方式不同,伸缩组中伸缩活动的执行结果也不同:
  • 手动执行伸缩规则、通过定时任务执行伸缩规则时,伸缩组不直接触发扩缩容动作,而是自动修改伸缩组的期望实例数。在期望实例数检查任务期间,系统会自动扫描稳态实例数和期望实例数之间的差异并自动触发扩缩容动作。
  • 手动添加实例、手动移出或删除实例、通过报警任务执行伸缩规则时,伸缩组直接触发扩缩容动作,并自动修改期望实例数。
手动执行伸缩规则、通过定时任务执行伸缩规则、手动添加实例、手动移出或删除实例、通过报警任务执行伸缩规则时,伸缩组直接触发扩缩容动作来添加或者移出实例。
并行执行功能 伸缩组支持并行执行伸缩活动功能,更多信息,请参见并行伸缩活动示例 伸缩组同一时间只支持一个伸缩活动,伸缩活动执行可能比较耗时,在此期间,您无法调整伸缩组实例数。

期望实例数变化规则

除手动设定期望实例数外,执行伸缩活动也可能导致期望实例数变化,具体变化情况和伸缩活动触发方式有关。

伸缩活动类型 伸缩活动触发方式 伸缩活动效果 期望实例数变化 示例
并行伸缩活动 手动执行伸缩规则 只修改期望实例数,等待期望实例数检查任务触发扩缩容。 稳态实例数±扩缩容数量 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 伸缩规则要求创建4台ECS实例。

结果:

期望实例数变为6台,但不会立即创建ECS实例,等待期望实例数检查任务触发扩缩容。

通过定时任务执行伸缩规则 只修改期望实例数,等待期望实例数检查任务触发扩缩容。 稳态实例数±扩缩容数量 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 伸缩规则要求创建4台ECS实例。

结果:

期望实例数变为6台,但不会立即创建ECS实例,等待期望实例数检查任务触发扩缩容。

手动添加实例 直接触发扩容,然后修改期望实例数。 当前期望实例数+扩容数量 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 手动添加4台已有的ECS实例。

结果:

4台ECS实例加入伸缩组,稳态实例数变为6台,然后期望实例数变为7台。

手动移出实例 直接触发缩容,然后修改期望实例数。 当前期望实例数-缩容数量 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 手动移出1台ECS实例。

结果:

1台ECS实例移出伸缩组,稳态实例数变为1台,然后期望实例数变为2台。

最大最小值检查任务 - 需要手动设定期望实例数 场景:
  • 当前最大实例数:5台。
  • 当前最小实例数:0台。
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 尝试修改最大实例数为1。

结果:

修改失败,您需要同时设定期望实例数。

实例健康检查任务 直接触发缩容。 期望实例数不变 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 1台ECS实例被诊断为不健康。

结果:

期望实例数不变,不健康的ECS实例被移出伸缩组,稳态实例数变为1台。伸缩组检测到期望实例数和稳态实例数间存在差距,会自动执行期望实例数检查任务,触发伸缩活动创建2台ECS实例。

期望实例数检查任务 直接触发扩缩容。 期望实例数不变 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。

结果:

期望实例数不变。伸缩组检测到期望实例数和稳态实例数间存在差距,会自动执行期望实例数检查任务,触发伸缩活动创建1台ECS实例。

非并行伸缩活动 通过报警任务执行伸缩规则 直接触发扩缩容,然后修改期望实例数。 稳态实例数±扩缩容数量 场景:
  • 当前期望实例数:3台。
  • 当前稳态实例数:2台。
  • 伸缩规则要求创建4台ECS实例。

结果:

触发伸缩活动创建4台ECS实例,然后期望实例数变为6台。

并行伸缩活动示例

指定期望实例数后,伸缩组支持同时执行并行伸缩活动,示例如下:
  • 示例1:连续手动执行伸缩规则
    场景:
    • 期望实例数:3台。
    • 稳态实例数:3台。
    • 伸缩规则add3要求创建3台ECS实例。
    • 伸缩规则add1要求创建1台ECS实例。
    • 手动执行add3,然后立即手动执行add1。
    结果:执行add3后,期望实例数从3台变为6台。可以立即执行add1,期望实例数从6台变为4台。并行伸缩活动的效果是创建1台ECS实例,伸缩活动结束后,伸缩组的稳态实例数为4台。示例1
  • 示例2:手动执行伸缩规则的同时手动添加实例
    场景:
    • 期望实例数:3台。
    • 稳态实例数:3台。
    • 伸缩规则add1要求创建1台ECS实例。
    • 手动执行add1,然后立即手动添加1台已有ECS实例。
    结果:执行add1后,期望实例数从3台变为4台。可以立即添加已有ECS实例,期望实例数从4台变为5台。并行伸缩活动的效果是创建1台ECS实例并添加1台已有ECS实例,伸缩活动结束后,伸缩组的稳态实例数为5台。示例2

非并行伸缩活动示例

指定期望实例数后,伸缩组不支持同时执行并行伸缩活动和非并行伸缩活动,示例如下:

场景:
  • 期望实例数:1台。
  • 稳态实例数:1台。
  • 报警任务伸缩规则要求创建3台ECS实例。
  • 伸缩规则add1要求创建1台ECS实例。
  • 报警任务触发后立即手动执行add1。
结果:报警任务触发伸缩活动,期望实例数从1台变为4台。由于报警任务触发的伸缩活动属于非并行伸缩活动,不支持立即执行并行伸缩活动,伸缩规则add1被拒绝执行,期望实例数仍为4台。非并行伸缩活动的效果是创建3台ECS实例,伸缩活动结束后,伸缩组的稳态实例数为4台。非并行活动示例