ビジネスのピーク時間とオフピーク時間を予測できる場合は、定時スケーリングを使用して、事前に定義されたスケジュールに基づいてインスタンス数を自動的に調整できます。トラフィックのピーク前にスケールアウトしてサービスパフォーマンスを確保し、オフピーク期間中にスケールインしてコストを節約します。このトピックでは、この機能の設定方法と、水平自動スケーリングとの連携方法について説明します。
方法 1: コンソールで定時スケーリングを設定する
定時自動スケーリングを有効にする
PAI コンソールにログインします。ページ上部でリージョンを選択します。次に、目的のワークスペースを選択し、[Elastic Algorithm Service (EAS)] をクリックします。
サービスリストで、ターゲットサービスをクリックしてその [概要] ページを開きます。
[Auto Scaling] タブの [定時スケーリング] セクションで、[定時スケーリングを有効にする] をクリックします。
[定時自動スケーリング設定] ダイアログボックスで、次のパラメーターを設定します。[追加] をクリックして複数のタスクを設定することもできます。完了したら、[OK] をクリックします。
パラメーター
説明
タスク名
スケジュールされたスケーリングタスクの名前。
予想インスタンス数
予想インスタンス数。
スケーリングスケジュール
タスクを実行する時間。次のいずれかの方法で時間を設定できます。
週: 毎週繰り返されるスケジュール。
日: 毎日繰り返されるスケジュール。
Cron 式: cron 式を使用してスケジュールを設定します。
定時スケーリング設定を更新する
[Auto Scaling] タブの [定時スケーリング] セクションで、[CronHPA の管理] をクリックできます。
[CronHPA 設定] ダイアログボックスで、[タスク名]、[予想インスタンス数]、または [スケーリングスケジュール] の設定を変更できます。
[更新] をクリックします。
定時自動スケーリングを無効にする
[Auto Scaling] タブの [定時スケーリング] セクションで、[定時スケーリングを無効にする] をクリックします。
[無効化の確認] ダイアログボックスで、[OK] をクリックします。
方法 2: ローカルクライアントを使用して設定する
定時自動スケーリングを有効または更新する
サービスを作成した後、定時スケーリングはデフォルトで無効になっています。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 式」をご参照ください。 説明
| ["* * * * * 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:00 に 10 インスタンスにスケールアウトされ、毎日 22:00 に 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 の値は次の表のルールによって決定されます。
水平自動スケーリングの最小/最大 | 定時自動スケーリング | 現在のインスタンス数 | 最終結果 | 説明 |
1/10 | 5 | 5 |
| ターゲットが現在のインスタンス数と一致する場合、変更は発生しません。 |
1/10 | 4 | 5 |
| ターゲットが現在のインスタンス数より低い場合、カウントは維持されます。 |
1/10 | 6 | 5 |
|
|
5/10 | 4 | 5 |
|
|
5/10 | 11 | 5 |
|
|
付録: Cron 式
定時スケーリングは、Cron 式を使用してスケジュールを定義します。
Cron 式
特殊文字
アスタリスク (*)
アスタリスク (*) は任意の値を表します。たとえば、
0 0 0 1 * *は毎月 1 日の 00:00 を表します。ハイフン (-)
ハイフン (-) は連続した値の範囲を表します。たとえば、
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 分ごとにイベントをトリガーします。有効な時点は、毎時 5、20、35 分です。
時間パラメーターの説明
名前
有効値
使用可能な特殊文字
2番目
0-59
* / , -
分
0-59
* / , -
時
0-23
* / , -
日
1-31
* / , -
月
1-12 または JAN-DEC
* / , -
週
0-6 または SUN-SAT
* / , -
よくある質問
定時スケーリングを使用してサービスを自動的に開始および停止するにはどうすればよいですか?
はい、できます。インスタンス数をゼロからスケールアップし、再びゼロにスケールダウンすることで、サービスを効果的に「開始」および「停止」できます。
これを行うには、2 つの個別のスケジュールされたタスクを設定します。
スケールアップ (開始): 希望の開始時刻 (例: 午前 8:00) に
ターゲットインスタンスを1にスケーリングするタスクを作成します。スケールダウン (停止): 希望の停止時刻 (例: 午後 8:00) に
ターゲットインスタンスを0にスケーリングする 2 番目のタスクを作成します。
これにより、サービスはアクティブな時間帯にのみ実行され、コストが発生するようになります。


関連ドキュメント
定義されたメトリックに基づいてインスタンスを自動的にスケーリングするには、水平自動スケーリングを有効にします。詳細については、「水平自動スケーリング」をご参照ください。
専用リソースグループのマシンリソースによってサービスのスケーリングが制限されないようにするには、EAS 弾性リソースプールを使用できます。詳細については、「弾性リソースプール」をご参照ください。