创建或修改伸缩组时,您可以设置适当的实例终止策略来控制伸缩组缩容时优先终止哪些ECS实例。弹性伸缩结合伸缩组的扩缩容策略和实例移出策略自动移出满足策略规则的ECS实例,您无需手动干预即可实现业务的自动化管理。本文介绍实例终止策略的生效方式和结果示例,有助于您选择与业务场景匹配的实例终止策略。
实例终止策略
ECS实例终止策略是扩缩容策略和实例移出策略的组合,伸缩组移出ECS实例时会同时受限于如下两个策略:
扩缩容策略
根据可用区或者ECS实例的成本,加入或者移出合适的ECS实例。缩容时,弹性伸缩按策略规则筛选并移出伸缩组内合适的ECS实例。具体策略如下:
优先级策略:先指定的交换机优先级最高。弹性伸缩优先在优先级最高的交换机所在可用区尝试扩缩容,如果无法扩缩容,则自动在下一优先级的交换机所在可用区进行扩缩容。
均衡分布策略:在伸缩组关联多个交换机且交换机分布在两个以上可用区时生效。弹性伸缩扩缩容后,伸缩组内各交换机所在的可用区之间ECS实例均衡分布。
成本优化策略:在伸缩配置中指定了多个可选实例规格时生效。扩容时弹性伸缩按vCPU单价从低到高尝试创建ECS实例,缩容时按vCPU单价从高到低尝试移出ECS实例。
说明当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建对应抢占式计费实例,当抢占式计费实例规格由于库存等原因都无法创建时,系统会自动尝试以按量付费的方式创建ECS实例。
自定义组合策略:使用组合方式自定义容量分布策略。您可使用该策略调整伸缩组内按量实例和抢占式实例的比例,均衡可用区间的容量以及选择满足需求的实例规格。
实例移出策略
根据时间的先后顺序,筛选伸缩组内符合条件的ECS实例。实例移出策略支持设置两段策略:
设置一段策略时,弹性伸缩只按照第一段策略筛选。
设置两段策略时,弹性伸缩先按第一段策略筛选,再从筛选结果中进行第二段筛选,但不支持为这两段设置相同的选项。
具体策略如下:
最早伸缩配置对应的实例:筛选添加时间最早的伸缩配置和启动模板对应的实例。手动添加的实例没有关联伸缩配置或启动模板,因此不会首先选出手动添加的实例。如果已移出全部关联的实例,仍需要继续移出实例,则随机移出手动添加的实例。
说明最早伸缩配置对应的实例中提到的伸缩配置泛指组内实例配置信息来源,包括伸缩配置和启动模板。
启动模板的版本号低不代表添加时间早,例如在创建伸缩组时选择实例启动模板lt-foress的版本2,然后修改伸缩组,选择实例启动模板lt-foress的版本1,则对伸缩组来说,启动模板lt-foress的版本2是最早的。
最早创建的实例:筛选创建时间最早的实例。
最新创建的实例:筛选创建时间最新的实例。
自定义策略:用户自定义实例移出策略,根据函数计算服务名、版本和函数名,筛选出符合自定义策略的实例。
ECS实例移出示例
假设,某伸缩组内存在的ECS实例如下表所示。以不同实例终止策略(扩缩容策略+实例移出策略)场景分类,为您展示弹性伸缩在不同策略场景下如何移出一台ECS实例。
下表中各ECS实例数据仅作为示例,实际数据请以弹性伸缩控制台为准。
实例ID | 可用区 | 加入时间 | 伸缩配置 (asc-1的添加时间最早) | vCPU单价(元) |
i-1 | 杭州可用区H | 2021年5月17日 11:05 | asc-1 | 1 |
i-2 | 杭州可用区I | 2021年5月18日 11:05 | asc-1 | 2 |
i-3 | 杭州可用区I | 2021年5月19日 11:05 | asc-1 | 3 |
i-4 | 杭州可用区H | 2021年5月20日 11:05 | asc-2 | 3 |
i-5 | 杭州可用区I | 2021年5月21日 11:05 | asc-2 | 3 |
场景一:扩缩容策略(优先级策略)+实例移出策略
弹性伸缩会严格按照实例移出策略筛选移出的ECS实例,优先级策略不改变该结果。
本示例中,实例移出策略的第一阶段移出策略选择自定义策略时,以自定义策略的筛选结果为杭州可用区H和杭州可用区I的ECS实例为例,且实例ID分别为i-1和i-3。下表说明该实例终止策略的最终效果。
第一段移出策略 | 第二段移出策略 | 实例移出效果 | 移出实例的实例ID |
最早伸缩配置对应的实例 | 最早创建的实例 | 先筛选最早伸缩配置对应的ECS实例,再从中选择最早创建的ECS实例。 | i-1 |
最新创建的实例 | 先筛选最早伸缩配置对应的ECS实例,再从中选择最新创建的ECS实例。 | i-3 | |
无策略 | 筛选最早伸缩配置对应的实例,再从中随机选择一台ECS实例。 |
| |
最早创建的实例 | - | 移出最早创建的ECS实例。 | i-1 |
最新创建的实例 | - | 移出最新创建的ECS实例。 | i-5 |
自定义策略 | 最早伸缩配置对应的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最早伸缩配置对应的ECS实例。 | i-1 |
最早创建的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最早创建的ECS实例。 | i-1 | |
最新创建的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最新创建的ECS实例。 | i-3 | |
无策略 | 筛选符合自定义策略规则的ECS实例,再从中随机选择一台ECS实例。 |
|
场景二:扩缩容策略(均衡分布策略)+实例移出策略
弹性伸缩会按照均衡分布策略筛选ECS实例的可用区,再按照实例移出策略筛选并移出ECS实例,使移出ECS实例后伸缩组各可用区的ECS实例数量大致相当。本示例中:
由于位于杭州可用区I的ECS实例比位于杭州可用区H的ECS实例多一台,所以,均衡发布策略的筛选结果为杭州可用区I的ECS实例,实例ID分别为i-2、i-3和i-5。
如果实例移出策略的第一阶段移出策略选择自定义策略时,以自定义策略的筛选结果为杭州可用区H和杭州可用区I的ECS实例为例,且实例ID分别为i-1和i-3。
下表结合实例移出策略说明该实例终止策略的最终效果。
第一段移出策略 | 第二段移出策略 | 说明 | 移出实例的实例ID |
最早伸缩配置对应的实例 | 最早创建的实例 | 先筛选最早伸缩配置对应的实例,再从中选择最早创建的实例。 | i-2 |
最新创建的实例 | 先筛选最早伸缩配置对应的实例,再从中选择最新创建的实例。 | i-3 | |
无策略 | 筛选最早伸缩配置对应的实例,再从中随机选择一台ECS实例。 |
| |
最早创建的实例 | - | 移出最早创建的ECS实例。 | i-2 |
最新创建的实例 | - | 移出最新创建的ECS实例。 | i-5 |
自定义策略 | 最早伸缩配置对应的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最早伸缩配置对应的ECS实例。 | i-3 |
最早创建的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最早创建的ECS实例。 | i-3 | |
最新创建的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最新创建的ECS实例。 | i-3 | |
无策略 | 筛选符合自定义策略规则的ECS实例,再从中随机选择一台ECS实例。 | i-3 |
场景三:扩缩容策略(成本优化策略)+实例移出策略
弹性伸缩会按照成本优化策略筛选并移出vCPU单价最高的ECS实例。如果伸缩组存在多个vCPU单价最高的实例时,弹性伸缩再按照实例移出策略筛选并移出ECS实例。本示例中:
由于vCPU单价最高为3元,所以,成本优化策略的筛选结果是实例ID为i-3、i-4和i-5的ECS实例。
如果实例移出策略的第一阶段移出策略选择自定义策略时,以自定义策略的筛选结果为杭州可用区H和杭州可用区I的ECS实例为例,且实例ID分别为i-1和i-3。
下表结合实例移出策略说明该组合策略的最终效果。
第一段移出策略 | 第二段移出策略 | 说明 | 移出实例的实例ID |
最早伸缩配置对应的实例 | 最早创建的实例 | 先筛选最早伸缩配置对应的实例,再从中选择最早创建的实例 | i-3 |
最新创建的实例 | 先筛选最早伸缩配置对应的实例,再从中选择最新创建的实例 | i-3 | |
无策略 | 筛选最早伸缩配置对应的实例,再从中随机选择一台ECS实例 | i-3 | |
最早创建的实例 | - | 移出最早创建的ECS实例 | i-3 |
最新创建的实例 | - | 移出最新创建的ECS实例 | i-5 |
自定义策略 | 最早伸缩配置对应的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最早伸缩配置对应的ECS实例。 | i-3 |
最早创建的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最早创建的ECS实例。 | i-3 | |
最新创建的实例 | 先筛选符合自定义策略规则的ECS实例,再从中选择最新创建的ECS实例。 | i-3 | |
无策略 | 筛选符合自定义策略规则的ECS实例。 | i-3 |
相关文档
基于多实例规格和多可用区的成本优化策略,可以提高弹性伸缩的成功率,同时降低成本。具体操作,请参见设置扩缩容策略和多实例规格降低成本。
弹性伸缩触发缩容活动时,系统可以根据自身设置的自定义实例移出策略选择缩容某些特定实例。如需了解如何设置伸缩组的自定义策略,请参见通过函数自定义ECS实例缩容策略。