Auto Scalingを指定時刻&定期的に実行する

時間指定でスケーリングさせる

Auto Scalingはインスタンスの状態などに応じて増減させるだけのように見えますが、実は決まった日時にスケールアウト/スケールインできます。 ここでは、その方法についてご紹介します。

スケジュール登録

まずは基本的なスケジュール登録についてです。ある時刻になるとインスタンス数を2にします。時刻はUTC形式の世界時間を入れます。

$ as-put-scheduled-update-group-action myaction1 -g mygroup1 --name "scale out" --region ap-northeast-1 --time "2011-08-16T17:37:00Z" -min-size 2 -max-size 2
OK-Put Scheduled Update Group Action

実際に登録されているか見てみます。

$ as-describe-scheduled-actions --region ap-northeast-1
UPDATE-GROUP-ACTION  mygroup1  scale out  2011-08-16T17:37:00Z  2  2

一覧に出てきました。実際に時刻を過ぎた頃に再度一覧表示をしてみます。リストから消えました。そして、実際にインスタンスが2つになりました。

$ as-describe-scheduled-actions --region ap-northeast-1
No Scheduled Actions found

それでは、未来の時間にインスタンス数を1にするスケジュールを登録します。

$ as-put-scheduled-update-group-action myaction2 -g mygroup1 --name "scale in" --region ap-northeast-1 --time "2011-08-16T17:41:00Z" -min-size 1 -max-size 1

無事に登録できました。そして、実際にインスタンス数が1になりました。

スケジュール登録の制限

スケジュール登録には、いくつかの制限があります。スケジュールは、グループをまたいで定義できません。スケジュールは最大125個まで登録ができ、これは、1日4つで31日先まで設定できることを意味しています。スケジュール時刻はユニークである必要があります。同じ時刻を指定した場合にはエラーとなります。

反復スケジュール

指定された時刻にスケールできるだけでも賢いですが、なんとrecurrenceオプションを指定することで、Cronのように反復実行ができます! 例えば、毎年、1月&6月&12月の1日の0時30分にインスタンス数を2にするスケジュール登録が以下です。

$ as-put-scheduled-update-group-action myaction3 -g mygroup1 --name "scale out" --region ap-northeast-1 --recurrence "30 0 1 1,6,12 *" -min-size 2 -max-size 2
OK-Put Scheduled Update Group Action

まとめ

Auto Scalingは、指定した時刻や定期的に実行できることが分かりました。月初や週末など予定された繁忙期にインスタンス数を増やすなどサービス品質を落とさない運用が容易になりますね。