当业务流量存在明显波峰波谷时,手动管理服务实例数量效率低、响应慢,容易造成资源浪费或服务过载。启用水平自动扩缩容功能后,EAS 能根据实时负载自动增减实例数量,动态匹配计算资源与业务需求,保障服务稳定运行的同时提升资源利用率。本文介绍如何通过控制台或客户端开启、更新和关闭该功能,并说明自动扩缩容的目标实例数计算逻辑。
工作原理
水平自动扩缩容基于设定的指标阈值动态调整实例数。当单实例的 QPS、CPU 利用率、GPU 利用率等指标超过阈值时触发扩容;低于阈值时触发缩容。目标实例数由当前实例数、当前指标值与阈值的比值共同决定,具体公式见下文。扩缩容操作支持延迟生效机制,避免因短暂流量波动导致频繁伸缩。
方式一:通过控制台管理水平自动扩缩容功能
开启水平自动扩缩容功能
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
在服务列表中,单击目标服务名称,进入服务详情页面。切换到自动伸缩页签,在弹性伸缩区域,单击开启弹性伸缩。
在自动弹性扩缩容设置对话框,配置以下参数。
说明当某个扩缩容指标达到预设的阈值时,系统将自动执行扩缩容操作。
基础配置
参数
描述
最小实例数
自动弹性扩缩容的下界,最小值为0(使用专属网关,不支持设置为0)。但生产环境中不建议设为0。这样做可能会在缩容时导致所有实例被删除,从而使服务无法正常运行。
说明即使按伸缩指标计算所需的实例数更少,也不会小于该值。
最大实例数
自动弹性扩缩容的上界,最大值为1000。
说明即便按伸缩指标计算所需的实例数更多,也不会多于该值。
常规扩缩容指标
单击常规扩缩容指标,在下拉列表中选择指标并配置伸缩阈值:
单实例QPS伸缩阈值:单实例的平均QPS大于该阈值时扩容。
CPU利用率阈值:单实例的平均CPU使用率大于该阈值时扩容。
异步队列长度:仅异步服务支持配置。队列中的请求数大于该阈值时扩容。
GPU利用率阈值:单个实例的平均GPU使用率大于该阈值时扩容。
自定义扩缩容指标
自定义配置扩缩容指标和伸缩阈值。具体配置方法,请参见自定义监控及扩缩容指标。
高级配置
参数
描述
扩容生效时长
指定从扩容指令下达开始到扩容实际生效所需的时长,如果在此期间系统检测到请求量恢复了,将会取消扩容指令。单位为秒,默认值为0秒。
缩容生效时长
指定从缩容指令下达开始到缩容实际生效所需的时长,如果在此期间系统检测到请求量增加了,将会取消缩容指令。单位为秒,默认值为300秒。
缩容到0的生效时长
指定从缩容指令下达开始到服务实例缩容到0所需的时长。
从0扩容的实例数
服务从实例数为0开始扩容时,直接扩容到指定的实例数量。
单击开启。
更新水平自动扩缩容配置信息
您可以使用以下任意一种方式,打开自动弹性扩缩容设置对话框。
方式一:在自动伸缩页签的弹性伸缩区域,单击更新。
方式二:在服务列表中,单击目标服务操作列下的
>弹性伸缩,打开自动弹性扩缩容设置对话框。
在自动弹性扩缩容设置对话框,修改相关配置信息。
单击更新。
关闭水平自动扩缩容功能
在自动伸缩页签的弹性伸缩区域,单击关闭弹性伸缩。
在确定关闭弹性伸缩对话框,单击确定。
方式二:通过本地客户端管理水平自动扩缩容功能
开启或更新水平自动扩缩容功能
服务创建后默认不开启Autoscaling(水平自动扩缩容)功能。可通过eascmd客户端使用autoscale子命令开启。如何登录eascmd客户端,请参见下载并认证客户端。开启与更新使用相同命令,支持两种方式:
当某个扩缩容指标达到预设的阈值时,系统将自动执行扩缩容操作。
参数形式
命令格式
eascmd autoscale [region]/[service_name] -D[attr_name]=[attr_value]
使用示例
eascmd autoscale cn-shanghai/test_autoscaler -Dmin=2 -Dmax=5 -Dstrategies.qps=10
配置形式
命令格式
eascmd autoscale [region]/[service_name] -s [desc_json]
Autoscaling功能通过配置desc_json来控制伸缩策略,desc_json参数配置示例如下。
{ "min": 2, "max": 5, "strategies": { "qps": 10 } }
使用示例
eascmd autoscale cn-shanghai/test_autoscaler -s scaler.json
参数 | 描述 |
min | 自动弹性扩缩容的下界,最小值为0(使用专属网关,不支持设置为0)。但生产环境中不建议设为0。这样做可能会在缩容时导致所有实例被删除,从而使服务无法正常运行。 说明 即使按伸缩指标计算所需的实例数更少,也不会小于该值。 |
max | 自动弹性扩缩容的上界,最大值为1000。 说明 即便按伸缩指标计算所需的实例数更多,也不会多于该值。 |
strategies | 根据业务使用场景,您可以选择qps、cpu定义伸缩策略:
|
关闭水平自动扩缩容功能
命令格式
eascmd autoscale rm [region]/[service_name]
使用示例
eascmd autoscale rm cn-shanghai/test_autoscaler
弹性伸缩策略说明
目标实例数计算公式
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
参数说明
desiredReplicas:目标实例个数。
currentReplicas:当前实例个数。
currentMetricValue:当前的扩缩容指标均值。
desiredMetricValue:扩缩容指标阈值。
使用示例
以QPS伸缩为例,部署服务时压测或预估单实例能够承载的QPS量为10,将单实例的QPS伸缩阈值(strategies.qps)设置为10。
当前2个实例,每个实例平均QPS量上升至23,则目标实例个数为5:
ceil[2 * (23/10)] = 5
。若后续负载下降,每个实例平均 QPS 降至2,则目标实例个数为1:
ceil[5 * (2/10)] =1
。此时实例个数会逐步缩容至1,缩容过程相对平滑一些,避免因请求波动引起异常缩容。
相关文档
如需定时自动调整实例数,请参见定时自动扩缩容功能。
如需灵活调配资源应对变化需求,请参见弹性资源池。
通过自定义监控指标监控扩缩容效果,请参见自定义监控及扩缩容指标。