在業務負載可以預估的情境中,為了避免資源浪費,您可以開啟定時自動擴縮容功能。開啟後,在業務負載高峰到來前, 服務定時將執行個體數自動擴容到指定數量;在業務負載高峰結束後,服務定時將執行個體數自動縮容到指定數量。 本文為您介紹如何管理定時自動擴縮容功能,以及水平與定時自動擴縮容的相容性說明。
背景資訊
管理定時自動擴縮容功能支援兩種方式(方式一:通過控制台管理定時自動擴縮容功能和方式二:通過本地用戶端管理定時自動擴縮容功能)。如果您同時開啟了水平與定時自動擴縮容功能,水平自動擴縮容目標執行個體數的最大值和最小值會隨著定時自動擴縮容的目標執行個體數變化,具體執行個體數的生效方式請參見定時與水平自動擴縮容的相容性說明。
方式一:通過控制台管理定時自動擴縮容功能
開啟定時自動擴縮容功能
進入模型線上服務(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的目標執行個體數。此時,服務最終的執行個體數量固定,不會進行Auto Scaling。 |
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
* / , -