在业务负载可以预估的场景中,为了避免资源浪费,您可以开启定时自动扩缩容功能。开启后,在业务负载高峰到来前, 服务定时将实例数自动扩容到指定数量;在业务负载高峰结束后,服务定时将实例数自动缩容到指定数量。 本文为您介绍如何管理定时自动扩缩容功能,以及水平与定时自动扩缩容的兼容性说明。
背景信息
管理定时自动扩缩容功能支持两种方式(方式一:通过控制台管理定时自动扩缩容功能和方式二:通过本地客户端管理定时自动扩缩容功能)。如果您同时开启了水平与定时自动扩缩容功能,水平自动扩缩容目标实例数的最大值和最小值会随着定时自动扩缩容的目标实例数变化,具体实例数的生效方式请参见定时与水平自动扩缩容的兼容性说明。
方式一:通过控制台管理定时自动扩缩容功能
开启定时自动扩缩容功能
进入模型在线服务(EAS)页面。
登录PAI控制台。
在左侧导航栏单击工作空间列表,在工作空间列表页面中单击待操作的工作空间名称,进入对应的工作空间。
在工作空间页面的左侧导航栏选择 ,进入模型在线服务(EAS)页面。
在服务列表中,单击目标服务名称,进入服务详情页面。
切换到自动伸缩页签,在定时扩缩容区域,单击开启定时扩缩容。
在定时自动扩缩容设置对话框,配置以下参数,您也可以单击添加来配置多个定时自动扩缩容任务。参数配置完成后单击确定。
参数
描述
任务名称
定时自动扩缩容任务名称,参考界面提示信息进行配置。
目标实例数
预期的实例数。
调度周期
定时执行时间,支持以下三种设置方式:
星期:您可以设置每周定时执行自动扩缩容的时间。
天:您可以设置每天定时执行自动扩缩容的时间。
Cron表达式:您可以通过设置Cron表达式,指定定时自动扩缩容的时间,关于如何设置Cron表达式,请参见附录:Cron表达式。
更新定时自动扩缩容配置信息
在自动伸缩页签的定时扩缩容区域,单击管理定时扩缩容。
在定时自动扩缩容设置对话框,修改任务名称、目标实例数或调度周期的配置信息。
单击更新。
关闭定时自动扩缩容功能
在自动伸缩页签的定时扩缩容区域,单击关闭定时扩缩容。
在确定关闭对话框,单击确定。
方式二:通过本地客户端管理定时自动扩缩容功能
开启定时自动扩缩容功能或更新配置
服务创建之后,默认不开启定时自动扩缩容功能,您可以登录eascmd客户端后使用cronscale子命令开启定时自动扩缩容功能或更新配置,如何登录eascmd客户端,请参见下载并认证客户端。
命令格式(以Windows 64版本为例)
eascmdwin64.exe cronscale [region]/[service_name] -s cronscale.json
操作命令之前,您需要先按照参数说明配置cronscale.json,cronscale.json参数配置示例如下。
{
"ExcludeDates": ["* * * * * 6,0"],
"ScaleJobs": [
{
"Schedule": "0 15,45 * * * *",
"TargetSize": 6
},
{
"Schedule": "0 0,30 * * * *",
"TargetSize": 1
},
{
"Schedule": "0 7,22,37,52 * * * *",
"TargetSize": 3
}
]
}
参数名称 | 说明 | 示例 |
ExcludeDates | 需要排除的时间点,为一个Cron表达式,详情请参见附录:Cron表达式。 说明 如果ScaleJobs中的Cron表达式同时满足ExcludeDates中的表达式,则ScaleJobs不会被执行。 | ["* * * * * 0,6"] 每周的周六和周日不执行定时扩缩容任务。 |
ScaleJobs | 需要执行的定时扩缩容任务,包含参数Schedule、TargetSize和Name:
| [ { "Schedule": "0 0 18 * * *", "TargetSize": 10, "Name": "scale-up" }, { "Schedule": "0 0 22 * * *", "TargetSize": 3, "Name": "scale-down" }] 在每天的18点整,将服务扩容到10,每天的22点整,将服务缩容到3。 |
查看定时自动扩缩容的配置
命令格式(以Windows 64版本为例)
eascmdwin64.exe cronscale show [region]/[service_name]
[RequestId]: F4C38D2D-4B38-5CB7-B706-9A1C41D4617E
+--------------+----------------------------+---------+------------+----------------------+
| NAME | SCHEDULE | STATE | TARGETSIZE | LASTPROBETIME |
+--------------+----------------------------+---------+------------+----------------------+
| scale-jobs-1 | 0 5,15,25,35,45,55 * * * * | Succeed | 1 | 2022-03-03T13:45:00Z |
| scale-jobs-0 | 0 0,10,20,30,40,50 * * * * | Succeed | 4 | 2022-03-03T13:50:00Z |
+--------------+----------------------------+---------+------------+----------------------+
关闭定时自动扩缩容功能
命令格式(以Windows 64版本为例)
eascmdwin64.exe cronscale rm [region]/[service_name]
定时与水平自动扩缩容的兼容性说明
定时自动扩缩容(以下简称Cronscaler)可以与水平自动扩缩容(以下简称Autoscaler)同时开启。同时开启时,Cronscaler修改的是Autoscaler的min或max。
虽然Cronscaler会永久性修改Autoscaler的配置,但在到达触发时间点之前,生效的仍然是Autoscaler的原始配置。服务每次更新、升级时,也会将Autoscaler的配置信息调整回原始配置。
同时开启Cronscaler和Autoscaler时,min和max的取值规则如下表所示。
水平自动扩缩容min/max | 定时自动扩缩容 | 最终结果min/max | 说明 |
2/5 | 1 | 1/5 | 如果Cronscaler的目标实例数小于Autoscaler的最小值时,Autoscaler的最小实例数将被修改为Cronscaler的目标实例数。 |
2/5 | 6 | 6/6 | 如果Cronscaler的目标实例数大于Autoscaler的最大实例数时,Autoscaler的最小和最大实例数都将被修改为Cronscaler的目标实例数。此时,服务最终的实例数量固定,不会进行弹性伸缩。 |
2/5 | 3 | 3/5 | 如果Cronscaler的目标实例数在Autoscaler的最小值和最大值之间时,Autoscaler的最小实例数将被修改为Cronscaler的目标实例数。 |
附录:Cron表达式
通过设置Cron表达式,开启定时自动扩缩容功能。
Cron表达式
特殊符号说明
星号(*)
星号代表任意值,例如:
0 0 0 1 * *
代表每月1号的0点整。连字符(-)
连字符代表一段连续的取值范围,例如:
0 0 12-14 * * *
代表每天的12:00、13:00 和14:00。逗号(,)
连字符代表一段取值范围,例如:
0 0 12,14 * * *
代表每天的12:00 和14:00。斜杠(/)
斜杠用来代表一段增量的区间,例如:
0 */15 * * * *
代表每小时的 0分、15分、30分、和45分。斜杠可以和连字符配合使用,例如0 5-40/15 * * * *
代表每小时从5分到40分钟之间,每隔15分钟取一个值,有效时间点可以是 0:05、0:20或0:35。
时间参数说明
名称
可用值
可用特殊符号
秒
0-59
* / , -
分
0-59
* / , -
小时
0-23
* / , -
日
1-31
* / , -
月
1-12 或 JAN-DEC
* / , -
星期
0-6 或 SUN-SAT
* / , -