当业务高峰和低谷时间可以预估时,您可以使用定时扩缩容功能,根据预设的时间表自动调整实例数量。它会在高峰前扩容以保障服务性能,在低谷时缩容以节约成本。本文将介绍其配置方法,并说明它与水平扩缩容的兼容性。
方式一:通过控制台配置
开启定时自动扩缩容功能
更新定时自动扩缩容配置信息
在自动伸缩页签的定时扩缩容区域,单击管理定时扩缩容。
在定时自动扩缩容设置对话框,修改任务名称、目标实例数或调度周期的配置信息。
单击更新。
关闭定时自动扩缩容功能
在自动伸缩页签的定时扩缩容区域,单击关闭定时扩缩容。
在确定关闭对话框,单击确定。
方式二:通过本地客户端配置
开启/更新定时自动扩缩容
服务创建之后,默认不开启定时自动扩缩容功能,您可以登录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 | 定时自动扩缩容 | 当前实例数 | 最终结果 | 说明 |
1/10 | 5 | 5 |
| 当Cronscaler中的目标实例数和当前实例数一致时,Autoscaler中的最小实例数和最大实例数以及当前的实例数无需变更。 |
1/10 | 4 | 5 |
| 当Cronscaler中的目标实例数低于当前实例数时,保留当前实例数。 |
1/10 | 6 | 5 |
|
|
5/10 | 4 | 5 |
|
|
5/10 | 11 | 5 |
|
|
附录: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
* / , -
常见问题
可以配置服务定时启动、定时关闭么?
可以。比如要求服务早上8点启动,晚上8点关闭,可以开启定时自动扩缩容并设置每天8点目标实例数为1,每天20点,目标实例数为0。