AutoScalingはどのEC2 インスタンスをTerminateするのか

AutoScalingは縮小(Scaling-In)の条件を満たしたら、どのEC2インスタンスをTerminateするのでしょうか。EC2のFAQには下記のように説明があります

Q: 規模の条件が満たされた時点で、Auto Scaling は、Auto Scaling Group においてどの Amazon EC2 インスタンスを終了させるのかどのように決定するのですか?
縮小/拡張の条件が満たされた時に終了するインスタンスを選択する際に、Auto Scaling は現在の起動設定を持つインスタンスを保持しようとします。したがって、現在の起動設定を持たないインスタンスが終了されることになります。複数のインスタンスがこの条件を満たす場合、Auto Scaling は実行されている請求時間が最も長い(超過せずに)インスタンスを終了します。特定のインスタンスを即時停止したい場合は、TerminateInstanceInAutoScalingGroup API を使用することができます。

EC2 FAQ

纏めると
1. 古い起動設定で起動しているインスタンスがまずTerminateの対象になる(例、古いAMIで起動しているインスタンスなど)
2.請求時間が最も長い(超過せずに)インスタンスを終了
では請求時間とは何なのか。
インスタンスを起動するとその時点から時間単価(Hourly-Rate)が1時間ごとに料金に加算されていきます。
AutoScalingはこの料金をなるべく抑えようと、次の1時間分の時間単価が加算されそうなインスタンスからTerminateしていきます。

ここで実際に試してみました。

AutoScalingで6台インスタンスが起動している状態で、DesiredCapacityを5に変更し、どのインスタンスがTerminateになるかの実験です。Terminateを実施したのは12:33です。インスタンスのリストに書いている時間帯は起動した時間です。

tkoba@tkoba] date; as-set-desired-capacity tkobaLC2 --desired-capacity 5 ~/aws
2012年 8月 28日 火曜日 12:33:23 JST
OK-Desired Capacity Set

Terminateに選ばれたのは11:39に起動したインスタンスです。
こちらのインスタンスはASグループの中で次の時間単価が課金されてしまうまでに最短の残り6分だったため選ばれました。

About tkobayashi

#aws #cloud #programming #web #ninja #gym #movies #scuba #twoandahalfmen http://www.koba206.com
This entry was posted in amazon web services and tagged , . Bookmark the permalink.

Leave a Reply