batchiです。
前回はスケーリングプランの種類についておさえました。
[Auto Scaling]まわりくどくクールダウンとウォームアップの違いを理解する①
それぞれのスケーリングポリシーに関わるクールダウン/ウォームアップを整理する前に、
クールダウンの中にも種類があるよ、というところから始まります。
2.クールダウンの種類
参照するのはこのあたりです。
http://docs.aws.amazon.com/ja_jp/autoscaling/latest/userguide/Cooldown.html
クールダウンとは、簡単に言えば、
過剰にスケールさせないために設ける待機時間です。
例えば、「負荷が高まってきたので1台追加した」となっても、
その1台がすぐに負荷の分散先として機能してくれるわけではありません。
インスタンスが作成されて、そのOS上でサービスが起動して…
となるまでは、負荷は高いままとなります。
そこの時間を踏まえないと、1台追加して「まだ負荷高い!もう1台追加しなくては!」となり、
さらなる1台もすぐには準備が整わないので「さらにもう1台!」となり、
すべての追加分のインスタンスが準備万端となったころには
過剰な台数が稼働している…となりかねません。
それを避けるためにクールダウンがあります。
クールダウンには、以下の2種類があります。
・デフォルトのクールダウン
・スケーリング固有のクールダウン
2.1.デフォルトのクールダウン
AutoScalingグループ作成時に設定する項目です。
ここをブランクにすることはできません。
よって、すべてのAutoScalingグループは、
1つの「デフォルトのクールダウン」の値を持ちます。
「デフォルトのクールダウン」のデフォルト値は300秒です。ややこしいですね。
「デフォルトの」っていうことはデフォルトでないクールダウンもあるわけでして、
それが次に説明する「スケーリング固有のクールダウン」です。
2.2.スケーリング固有のクールダウン
特定のスケーリングプランを取る時に、
デフォルトのクールダウンの値を上書き(オーバーライド)することができます。
デフォルトのクールダウンはAutoScalingグループに対して設定していましたが、
スケーリング固有のクールダウンはスケーリングプランごとに設定します。
(具体的には、シンプルスケーリングポリシーか、手動スケーリングアクション)
スケーリング固有のクールダウンは、
オプション的な位置づけで、指定は必須ではありません。
指定しなかった場合はデフォルトのクールダウンの値が採用されることになるんですね、
と理解したくなりますが、少しだけ違います。
スケーリングプランによります。
はじめに「特定のスケーリングプラン」と書きましたが、
スケーリング固有のクールダウンが関わるのは、
「手動スケーリング」か「シンプルスケーリングポリシーによる動的スケーリング」のどちらかです。
2.2.1.手動スケーリングの場合
ここでスケーリング固有のクールダウンを指定しないと、
クールダウンそのものが無視されます。
デフォルトのクールダウンは手動スケーリングにサポートされていないためです。
スケーリング固有のクールダウンを指定した時のみ、
クールダウン期間分の待機が実施されます。
#この場合も「オーバーライド」というのが正しいのか不明です。
#CLIによる手動スケーリングの時だけしかスケーリング固有のクールダウンを指定出来ない気がします。
2.2.2.シンプルスケーリングポリシーによる動的スケーリング
ここでは、スケーリング固有のクールダウンを指定しない場合、
デフォルトのクールダウンの値が採用されます。
これは分かりやすいですね。
スケーリング固有のクールダウンを指定すればそちらが採用される、
すなわちオーバーライド、というのも分かりやすいです。
* * * *
クールダウンの種類が判明しましたので、
次回はそれを踏まえてスケーリングプランごとの
「デフォルトのクールダウン/スケーリング固有のクールダウン/ウォームアップ」の関連を整理したいと思います。
進み方がまわりくどいですね。
こちらからは以上です。