扩缩容策略

伸缩组通过自动调整资源来应对应用的负载变化,确保服务的稳定性和成本效益。当触发扩容或缩容操作时,需要选择“合适”的实例加入或移出伸缩组,判断“合适”的实例的过程主要由预设的扩缩容策略完成。弹性伸缩为您预设了几种扩缩容策略,您可以参考本文完成扩缩容策略的配置。

扩缩容策略说明

伸缩组默认会根据您配置的交换机的顺序(优先级策略),进行伸缩组的伸缩活动,您可以通过修改扩缩容策略来实现其他策略,伸缩组为您预设了几种伸缩策略,具体策略说明如下。

重要

伸缩组类型ECS,且网络类型专有网络时,支持修改该配置,当伸缩组类型ECI时,默认扩缩容策略优先级策略

  • 优先级策略(默认策略)。

    根据您定义的虚拟交换机扩缩容。当优先级较高的虚拟交换机所在可用区无法创建实例时,自动在下一优先级的虚拟交换机的可用区创建实例。

  • 均衡分布策略

    如果您期望在扩缩容后,保持伸缩组在可用区之间分布均衡从而达成多可用区容灾的效果,您可以采用本策略。如果由于库存不足等原因导致可用区之间ECS实例的数量不均衡,您可以执行再均衡分布操作来平衡ECS实例的分布情况。具体操作,请参见ECS实例再均衡分布

  • 成本优化策略

    当成本在您的决策中优先级比较高,您可以使用成本优化策略。使用该策略,在伸缩活动发生时,会按照实例的vCPU单价从低到高进行尝试创建,当伸缩配置设置了抢占式计费方式的多实例规格时,优先创建对应抢占式计费实例,当抢占式计费实例规格由于库存等原因都无法创建时,自动尝试以按量付费的方式创建,在缩容活动发生时,则会优先移出vCPU单价最高的实例。

  • 自定义组合策略

    使用组合方式自定义容量分布策略。您可使用该策略调整伸缩组内按量实例和抢占式实例的比例,可用区间的容量均衡以及实例规格的选择。

如何配置,请参见配置扩缩容策略

配置扩缩容策略

修改已有伸缩组的扩缩容策略

如果您需要修改已有伸缩组的扩缩容策略,请参考以下步骤完成配置。

  1. 登录弹性伸缩控制台

  2. 在左侧导航栏中,单击伸缩组管理
  3. 在顶部菜单栏处,选择地域。
  4. 伸缩组管理页中,找到您需要修改扩缩容策略的伸缩组,在右侧操作下,单击修改按钮弹出修改伸缩组窗口。

  5. 扩缩容策略设置为您需要的策略。

    如果您选择了均衡分布策略成本优化策略自定义组合策略,需要进一步完成其子配置,具体子配置项说明,请参见子配置项说明

  6. 单击确认按钮完成配置操作。

创建伸缩组时配置扩缩容策略

您可以在通过表单创建伸缩组时,完成扩缩容策略的配置,如下图所示。

image

如果您选择了成本优化策略自定义组合策略,需要进一步完成其子配置,具体子配置项说明,请参见子配置项说明

子配置项说明

如果您设置了均衡分布策略成本优化策略自定义组合策略,您可参考下表完成进一步配置。

均衡分布策略

配置项

说明

均衡模式

  • 尽力交付模式:默认交付模式,当某可用区因资源限制创建失败时,会降级至其他可用区。

  • 仅均衡:当某可用区因资源限制创建失败时,不会降级至其他可用区。

开启自动均衡

开启后,伸缩组会自动检测可用区容量,当可用区容量不均衡时,会主动进行可用区间扩缩,实现可用区容量再均衡。

成本优化策略

配置项

说明

组内最小按量实例数(台)

伸缩组所需按量付费ECS实例的最小台数,默认为0台。如果伸缩组内的按量付费ECS实例的数量小于该值,将优先创建按量付费实例。

按量实例所占比例(%)

自动创建ECS实例时按量付费实例所占的比例,默认为70%。计算该值时,不包括组内最小按量实例数对应的台数。

最低价的多个实例规格(个)

价格最低的实例规格的个数,默认为1个。在伸缩配置中指定了多个可选实例规格时生效。创建抢占式实例时,伸缩组会在价格最低的几个实例规格之间均衡创建ECS实例。

开启抢占式实例补偿

开启抢占式实例补偿后,在抢占式实例被回收前5分钟,伸缩组会主动创建新的抢占式实例,并替换掉将被回收的抢占式实例。

使用按量实例补充抢占式容量

默认为开启状态。如果因价格、库存等原因无法满足所需要的抢占式实例容量时,开启该功能,伸缩组会尝试创建按量付费实例来满足当前抢占式实例的容量。

开启抢占式实例自动替换按量

开启使用按量实例补充抢占式容量后,伸缩组中按量实例比例可能会超过按量实例所占比例(%),您可以开启该选项,开启后伸缩组会尝试使用抢占式实例替换按量实例。

自定义组合策略

配置项

说明

组内最小按量实例数(台)

伸缩组所需按量付费ECS实例的最小台数,默认为0台。如果伸缩组内的按量付费ECS实例的数量小于该值,将优先创建按量付费实例。

按量实例所占比例(%)

自动创建ECS实例时按量付费实例所占的比例,默认为70%。计算该值时,不包括组内最小按量实例数对应的台数。

开启可用区容量均衡

在伸缩组指定的多可用区(即指定多个专有网络交换机)之间均匀分配ECS实例。

说明

您可以通过执行再均衡分布操作来平衡ECS实例在可用区的分布,具体操作,请参见ECS实例再均衡分布

容量分布策略

容量分布策略决定伸缩组如何选择可用的实例规格满足容量。

  • 实例规格顺序:按照配置的实例规格的顺序依次优先创建实例。

  • 最低价格:按照实例规格单位vCPU价格从低到高创建实例。

单独指定抢占式容量分布策略

开启后可以单独为抢占式实例指定容量分布策略。

抢占式容量分布策略

容量分布策略

最低价的多个实例规格(个)

指定最低价的多个实例规格,当创建抢占式实例时,将在指定的实例规格中进行均衡分布。

开启抢占式实例补偿

开启后在抢占式实例被回收前5分钟左右,将主动替换掉当前抢占式实例。

使用按量实例补充抢占式容量

默认为开启状态。如果因价格、库存等原因无法满足所需要的抢占式实例容量时,开启该功能,伸缩组会尝试创建按量付费实例来满足当前抢占式实例的容量。

开启抢占式实例自动替换按量

开启使用按量实例补充抢占式容量后,伸缩组中按量实例比例可能会超过按量实例所占比例(%),您可以开启该选项,开启后伸缩组会尝试使用抢占式实例替换按量实例。

通过API修改伸缩组扩缩容策略

您可以通过API调用的方式修改伸缩组的扩缩容策略,本文以通过调用ModifyScalingGroup修改伸缩组扩缩容策略为例。不同策略需要关注不同的配置项,不同扩缩容策略需设置配置项如下:

设置优先级策略

根据您定义的虚拟交换机扩缩容。当优先级较高的虚拟交换机所在可用区无法创建实例时,自动在下一优先级的虚拟交换机的可用区创建实例。

参数名称

类型

说明

如何设置

ScalingGroupId

string

伸缩组ID。(必选)

设置为待修改伸缩组的ID。

MultiAZPolicy

string

扩缩容策略。(必选)

实现优先级策略需设置为PRIORITY

设置为均衡分布策略

重要

伸缩组需配置多可用区交换机才可以在多个可用区创建实例。

参数名称

类型

说明

如何设置

ScalingGroupId

string

伸缩组ID。(必选)

设置为待修改伸缩组的ID。

MultiAZPolicy

string

扩缩容策略。(必选)

实现均衡分布策略需设置为BALANCE

BalanceMode

string

均衡模式。(可选)

取值范围:

  • BalancedBestEffort(:尽力交付模式。当某可用区资源创建失败时,会降级至其他可用区,保障资源的尽力交付。

  • BalancedOnly:当某可用区因资源限制创建失败时,不会降级至其他可用区。

默认值:BalancedBestEffort

AutoRebalance

boolean

开启自动均衡(可选)

开启后,伸缩组会自动检测可用区容量,当可用区容量不均衡时,会主动进行可用区间扩缩,实现可用区容量再均衡。

仅当BalanceMode=BalancedOnly才生效。

取值范围:

  • false:不开启。

  • true:开启。

默认值:false。

如果由于库存不足等原因导致,实例在可用区之间变得不平衡,可以手动调用相关API,重新平衡实例分布,请参见RebalanceInstances - 重新平衡ECS实例分布

设置为成本优化策略

按照实例的vCPU单价从低到高进行尝试创建,伸缩配置设置了抢占式实例后,优先创建抢占式实例,无法创建抢占式实例时尝试创建按量实例。

重要

伸缩配置设置多实例规格开启抢占式实例后,成本优化策略才可生效。

参数名称

类型

说明

如何设置

ScalingGroupId

string

伸缩组ID。(必选)

设置为待修改伸缩组的ID。

MultiAZPolicy

string

扩缩容策略。(必选)

实现成本优化策略需设置为COST_OPTIMIZED

OnDemandBaseCapacity

integer

组内最小按量实例数(台)。(可选)

当伸缩组内按量实例个数少于该值时,系统将优先创建按量实例。

根据实际需求设置。

取值范围:0~1000。

默认值:0。

OnDemandPercentageAboveBaseCapacity

integer

按量实例所占比例(%)。(可选)

满足最小按量实例数OnDemandBaseCapacity的要求后,超出的实例中按量实例应占的比例。

根据实际需求设置。

取值范围:0~100。

默认值:0。

SpotInstancePools

integer

最低价的多个实例规格(个)。

价格最低的实例规格的个数。在伸缩配置中指定了多个可选实例规格时生效。
创建抢占式实例时,伸缩组会在价格最低的几个实例规格之间均衡创建ECS实例。

根据实际需求设置。

取值范围:0~10。

默认值:2。

SpotInstanceRemedy

boolean

是否开启抢占式实例补偿。

开启抢占式实例补偿后,在抢占式实例被回收前5分钟,伸缩组会主动创建新的抢占式实例,并替换掉将被回收的抢占式实例。

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。

CompensateWithOnDemand

boolean

是否开启使用按量实例补充抢占式容量

如果因价格、库存等原因无法创建足够的抢占式实例,是否允许自动尝试创建按量实例满足 ECS 实例数量要求。

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。

CapacityOptions.SpotAutoReplaceOnDemand

boolean

是否开启抢占式实例自动替换按量。

当开启CompensateWithOnDemand后,如果按量比例超过OnDemandPercentageAboveBaseCapacity比例时,会尝试使用spot替换按量容量。

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。

设置为自定义组合策略

可使用该策略调整伸缩组内按量实例和抢占式实例的比例,可用区间的容量均衡以及实例规格的选择。

参数名称

类型

说明

如何设置

ScalingGroupId

string

伸缩组ID(必选)

设置为待修改伸缩组的ID。

MultiAZPolicy

string

扩缩容策略(必选)

实现自定义组合策略需设置为COMPOSABLE

OnDemandBaseCapacity

integer

组内最小按量实例数(台)。(可选)

当伸缩组内按量实例个数少于该值时,系统将优先创建按量实例。

根据实际需求设置。

取值范围:0~1000。

默认值:0。

OnDemandPercentageAboveBaseCapacity

integer

按量实例所占比例(%)。(可选)

满足最小按量实例数OnDemandBaseCapacity的要求后,超出的实例中按量实例应占的比例。

根据实际需求设置。

取值范围:0~100。

默认值:100。

AzBalance

boolean

是否开启可用区容量均衡。(可选)

在伸缩组指定的多可用区(即指定多个专有网络交换机)之间均匀分配ECS实例。如果由于库存不足等原因可用区之间变得不平衡,可以调用相关API,重新平衡,请参见RebalanceInstances - 重新平衡ECS实例分布

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。

AllocationStrategy

string

容量分布策略。(可选)

容量分布策略决定伸缩组如何选择可用的实例规格满足容量。

根据实际需求设置。

取值范围:

  • priority(默认值):按照配置的实例规格的顺序依次优先创建实例。

  • lowestPrice:按照实例规格单位vCPU价格从低到高创建实例。

SpotAllocationStrategy

string

单独指定抢占式容量分布策略。(可选)

使用该选项可以单独制定抢占式容量分布策略。

根据实际需求设置。

取值范围:

  • priority:按照配置的实例规格的顺序依次优先创建实例。

  • lowestPrice:按照实例规格单位vCPU价格从低到高创建实例。

SpotInstancePools

integer

最低价的多个实例规格(个)。

重要

当参数AllocationStrategySpotAllocationStrategy值为lowestPrice时需要设置该字段。

价格最低的实例规格的个数。在伸缩配置中指定了多个可选实例规格时生效。
创建抢占式实例时,伸缩组会在价格最低的几个实例规格之间均衡创建ECS实例。

根据实际需求设置。

取值范围:0~10。

默认值:2。

SpotInstanceRemedy

boolean

是否开启抢占式实例补偿

重要

当参数AllocationStrategySpotAllocationStrategy值为lowestPrice时需要设置该字段。

开启抢占式实例补偿后,在抢占式实例被回收前5分钟,伸缩组会主动创建新的抢占式实例,并替换掉将被回收的抢占式实例。

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。

CompensateWithOnDemand

boolean

是否开启使用按量实例补充抢占式容量

重要

当参数AllocationStrategySpotAllocationStrategy值为lowestPrice时需要设置该字段。

如果因价格、库存等原因无法创建足够的抢占式实例,是否允许自动尝试创建按量实例满足 ECS 实例数量要求。

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。

CapacityOptions.SpotAutoReplaceOnDemand

boolean

是否开启抢占式实例自动替换按量。

当开启CompensateWithOnDemand后,如果按量比例超过OnDemandPercentageAboveBaseCapacity比例时,会尝试使用spot替换按量容量。

根据实际需求设置。

取值范围:

  • true:开启。

  • false:关闭。