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

期望实例数介绍

指定期望实例数后,伸缩组会自动将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台,但还没有立即执行期望实例数检查任务触发扩容,所以稳态实例数仍然是3台。然后立即执行add1,由于稳态实例数仍然是3台,期望实例数变为4台。等待期望实例数检查任务触发扩容后,并行伸缩活动的效果是创建1台ECS实例。
  • 示例2:手动执行伸缩规则的同时手动添加实例
    场景:
    • 期望实例数:3台
    • 稳态实例数:3台
    • 伸缩规则add1要求创建1台ECS实例
    • 手动执行add1,然后立即手动添加1台已有ECS实例
    结果:执行add1后,期望实例数从3台变为4台。可以立即添加已有ECS实例,期望实例数从4台变为5台。并行伸缩活动的效果是创建1台ECS实例并添加1台已有ECS实例。

非并行伸缩活动示例

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

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