弹性资源池是 EAS 提供的一种服务级别混合资源调度策略。它允许部署在专属资源组的服务,在因业务高峰触发扩容且专属资源不足时,自动将新增的副本“溢出”到按量付费的公共资源组中,从而保障服务的弹性伸缩能力。
功能优势
突破资源组容量限制:当专属资源组内资源不足时,服务扩容可自动使用公共资源池中的按量实例,确保水平自动扩缩容(基于 QPS、CPU 等指标)不受专属资源组物理节点数量限制。
优化成本:通过预留低成本预付费资源满足基线负载,仅在峰值时按需使用按量资源,避免为峰值负载长期持有冗余专属资源,从而降低整体资源成本。
工作原理
弹性资源池的调度逻辑遵循明确的优先级顺序,以实现成本和稳定性的平衡。
扩容
当服务触发扩容时,EAS 调度器首先尝试在服务所在的专属资源组内创建新实例。
如果专属资源组因资源不足(如无可用节点,或节点剩余 CPU/内存/GPU 无法满足实例要求)而无法创建实例,调度器将使用您在配置弹性资源池时指定的资源规格(实例类型)在公共资源组中创建新实例。
缩容
当服务触发缩容时,系统会优先选择并终止位于公共资源组中的实例。
只有当公共资源组中的所有弹性实例都被缩容后,系统才会开始缩容专属资源组中的实例。这确保了成本较高的弹性资源被优先释放,同时保留了更稳定的保底实例。
前提条件
已创建专属资源组,详情请参见使用EAS资源组。
配置方法
服务部署时开启弹性资源池
控制台配置
JSON配置
开启弹性资源池的关键参数如下,其他参数请参见JSON部署。
resource_burstable:配置为true时,表示开启弹性资源池。
cloud.networking:开启弹性资源池时,为保证弹性伸缩过程中的网络可用性,请通过该字段配置服务的专有网络。
重要使用专属资源组时可在资源组级别配置专有网络,但专属资源组仅可在服务级别(通过cloud.networking字段)配置。
cloud.computing:扩容到公共资源的实例可使用的机器规格,详情请参见使用公共资源。
JSON文件配置示例如下。
{
"model_path": "http://examplebucket.oss-cn-shanghai.aliyuncs.com/models/lr.pmml",
"name": "test_burstable_service",
"processor": "pmml",
"metadata": {
"instance": 1,
"cpu": 1,
"resource": "eas-r-xxx",
"resource_burstable": true
},
"cloud": {
"computing": {
"instance_type": "ecs.r7.2xlarge"
},
"networking": {
"security_group_id": "sg-uf68iou5an8j7sxd****",
"vswitch_id": "vsw-uf6nji7pzztuoe9i7****"
}
}
}服务部署后开启或关闭弹性资源池
通过控制台
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
单击已部署服务操作列下的更新。
在更新服务页面的资源信息区域开启或关闭资源自动伸缩功能。
开启资源自动伸缩
在资源信息区域,打开弹性资源池开关,并配置公共资源组资源规格。
关闭资源自动伸缩
在资源信息区域,关闭弹性资源池开关。
单击更新。
通过本地客户端
您可以使用以下命令,为已部署的服务快速打开或关闭自动伸缩功能。以Windows 64版本为例:
如果在专属资源组中部署服务时未配置cloud.networking参数,则开启自动伸缩功能后,扩容到公共资源组的实例不支持网络直连功能。
# 开启服务资源自动弹性伸缩。
eascmdwin64.exe modify <service_name> -Dmetadata.resource_burstable=true
# 关闭服务资源自动弹性伸缩。
eascmdwin64.exe modify <service_name> -Dmetadata.resource_burstable=false其中:<service_name>:需要替换为已部署的服务名称。
服务资源自动伸缩功能的开启和关闭只会影响新创建的服务实例,老实例不会自动做迁移。例如:一个服务扩容完成后有2个实例为pending(等待中)状态,在开启了资源自动伸缩功能后,这2个pending(等待中)的实例不会自动迁移至公共资源组上。您可以在控制台上重启该实例,实例重启后会调度到公共资源中。同理,已经开启了自动伸缩的服务,调度到公共资源中的服务实例,在关闭了资源自动伸缩功能后,也不会自动调度回专属资源中。
