弹性供应是一个快速交付ECS实例集群的方案,简单配置后即可自动在多个可用区内交付不同计费方式(按量付费和抢占式实例)、多种实例规格的实例集合,提升批量交付大量实例的效率。弹性供应提供多种供应策略,有效缓解抢占式实例被回收对业务的影响,让您更稳定地使用低价算力。

弹性供应简介

弹性供应组根据您设置的资源池、目标容量、供应策略等属性自动交付实例集群,您无需逐一关注实例的创建过程或者计算单台实例的成本。以下为弹性供应组的主要属性:
  • 资源池:单可用区和单实例规格的组合形成一个资源池,指定多个可用区、多个实例规格,弹性供应组在创建实例时即可有多个资源池可以选择。
  • 目标容量:期望通过弹性供应组交付的算力,分为抢占式实例容量和按量付费实例容量,容量单位支持实例个数、vCPU个数或内存大小。

    弹性供应组默认使用抢占式实例满足目标容量的需求,您可以手动指定按量付费实例容量满足最低算力的需求。如果指定了按量付费实例容量,优先创建按量付费实例,然后创建抢占式实例补齐剩余容量。但如果因库存不足导致不能创建抢占式实例,会创建按量付费实例满足目标容量的需求。

  • 供应策略:创建实例时选择资源池的策略,例如尽量选择单价低的资源池以降低成本,尽量在不同可用区均衡创建实例以提高集群可用性。

应用场景

弹性供应组和抢占式实例的应用场景类似,即无状态应用的场景,例如可横向伸缩的Web站点服务、图像渲染、大数据分析、并行计算等。更多信息,请参见抢占式实例概述

使用说明

在创建弹性供应组前,请确定以下内容:
  • 确定弹性供应组的实例基本配置,即启动模板。更多信息,请参见实例启动模板概述

    弹性供应组沿用启动模板中指定的镜像、安全组、登录凭证等属性,但不会直接使用交换机(决定实例所在可用区)和实例规格属性,而是使用单独指定的交换机和实例规格。

  • 确定弹性供应组的资源池,实现多可用区、多实例规格。
    单可用区和单实例规格的组合形成一个资源池,当某些资源池库存不足时,弹性供应组会自动切换到其他资源池继续尝试创建实例。资源池越多,创建实例时的可选范围越大,创建成功率越高。
    说明 单可用区下仅支持指定一个交换机。如果指定了同一个可用区下的多个交换机,仅第一个交换机生效。
  • 确定弹性供应组的目标容量以及不同类型容量的占比。
    弹性供应组目标容量的单位支持实例个数、vCPU个数和内存大小,通过权重表示单台实例可满足的容量大小。权重规则如下:
    • 如果目标容量单位为实例个数,各实例规格的权重都是相同的。
    • 如果目标容量单位为vCPU个数,各实例规格的权重和vCPU个数有关,vCPU个数越多权重越大,满足目标容量所需实例的数量越少。
    • 如果目标容量是实例规格多个维度因子(例如vCPU、内存)的组合,请您自行评估指定实例规格能为目标容量贡献的算力,然后手动为各实例规格设置权重,权重越大代表该实例规格能贡献的算力越大。
      说明 仅在调用API CreateAutoProvisioningGroup创建弹性供应组时支持手动设置权重。

    按量付费实例容量用于满足最低算力的需求,在此基础上使用抢占式实例可以大大降低成本。

  • 确定供应策略。

    弹性供应组支持的策略类型如下表所示。

    策略类型 适用于 支持设置策略的方式 说明
    容量优化策略(capacity-optimized) 抢占式实例
    • 控制台(抢占式实例):供应策略设置为容量优化策略
    • API(抢占式实例):SpotAllocationStrategy取值为capacity-optimized
    综合考虑抢占式实例的回收率和价格,使用创建成功率高且成本相对较低的资源池创建实例,有效降低抢占式实例被回收的次数,保证容量稳定。
    多可用区均衡策略(diversified) 抢占式实例
    • 控制台(抢占式实例):供应策略设置为多可用区均衡策略
    • API(抢占式实例):SpotAllocationStrategy取值为diversified
    优先在多个可用区中均衡地创建实例,规避因单可用区库存不足导致实例创建失败,有效提高应用容灾能力。
    成本最优策略(lowest-price) 抢占式实例、按量付费实例
    • 控制台(抢占式实例):供应策略设置为成本最优策略
    • API(抢占式实例):SpotAllocationStrategy取值为lowest-price
    • API(按量付费实例):PayAsYouGoAllocationStrategy取值为lowest-price
    使用成本最低的资源池创建实例,有效降低成本。此处成本最低指vCPU单价最低。

    如果您调用CreateAutoProvisioningGroup创建弹性供应组,可以针对抢占式实例指定使用成本最优策略和使用的资源池数量(SpotInstancePoolsToUseCount),同时使用成本最低的多个资源池创建实例。

    例如,目标容量为100台抢占式实例,SpotInstancePoolsToUseCount取值为5,则使用每个资源池创建20台实例。当单个资源池对应的抢占式实例被回收时,其他资源池对应的抢占式实例仍然可用,可以有效提高服务的可用性。

    优先级策略(prioritized) 按量付费实例 API(按量付费实例):PayAsYouGoAllocationStrategy取值为prioritized 按照资源池的优先级从高到低依次创建实例,在高优先级资源池的库存不足时,才会使用低优先级资源池创建实例。

    需要调用CreateAutoProvisioningGroup创建弹性供应组,指定使用优先级策略和资源池的优先级(LaunchTemplateConfig.N.Priority)。

    说明 仅在调用API CreateAutoProvisioningGroup创建弹性供应组时支持为按量付费实例设置供应策略,否则默认应用成本最优策略。
  • 确定价格上限。

    弹性供应组支持针对单资源池和全部资源池设置抢占式实例的价格上限。如果超过了价格上限,弹性供应组即使没有达到目标容量也会停止创建实例,保证不会超过您的预算。

    针对按量付费实例,您可以搭配预留实例券、节省计划等折扣计划,进一步降低成本。更多信息,请参见预留实例券概述节省计划概述

  • 确定是否持续保持目标容量。

    弹性供应组类型分为一次性交付和持续保持。持续保持类型的弹性供应组支持自动检查实例的健康状态,以及比较弹性供应组的实时容量和目标容量,当实例因不健康或库存不足被移除时,弹性供应组会自动创建新的实例补齐容量,保证实时容量满足算力需求。

弹性供应组启动后会自动根据供应策略选择合适的资源池,尝试交付满足目标容量需求的实例集群。例如,您希望基于启动模板MyLaunchTemplate交付一个包含12台实例的集群,并尽量提高集群可用性,则设置弹性供应组的流程如下:
  1. 基于MyLaunchTemplate扩展出多个资源池。
  2. 确定抢占式实例容量和按量付费实例容量的占比。
  3. 选择提高集群可用性的供应策略。
apg-sequence

计费

弹性供应为免费功能,但是您需要为创建出的ECS实例付费。弹性供应支持创建抢占式实例和按量付费实例,更多信息,请参见 抢占式实例概述按量付费
警告 请确保账号可用额度充足。如果账号欠费,所有后付费的ECS实例(包括按量付费实例和抢占式实例)都会停机,停机时间点请参见 结算周期。此时弹性供应组不能交付新的ECS实例,同时由于弹性供应组具有健康检查能力,已停机的ECS实例会被判定为不健康,然后被移出弹性供应组并释放。

使用限制

  • 弹性供应组不支持跨地域供应实例。
  • 每个弹性供应组最多指定一个启动模板的指定版本作为实例基本配置,但是您可以扩展模板中的实例规格形成多个资源池。
  • 弹性供应组下最多支持设置20个资源池(即可用区+实例规格的组合)。
  • 每个弹性供应组下最多创建1000台实例。