概要
Auto Scalingを利用していて、スケールインしたときの動きについてまとめてみます。
AWSドキュメントによると、スケールイン時のうごきが以下の通り。
Auto Scaling は、選択したアベイラビリティーゾーンで、保護されていないどのインスタンスが最も古い起動設定を使用しているかを判断します。このよう title:なインスタンスが 1 つある場合、そのインスタンスを終了します。
docs.aws.amazon.com
つまり、古いものから停止されていくので、グループ内で稼働し続けるようなインスタンスは存在しないということになります。
実際に試してみる
Auto Scalingを設定して、実際に動きを確認してみます。
Auto Scaling(スケジュールされたイベント) の設定
設定は以下ようなかんじで設定してみました。
名前 |
繰り返し |
最小 |
最大 |
start |
5,15,25,35,45,55 * * * * |
4 |
4 |
stop |
0,10,20,30,40,50 * * * * |
3 |
3 |
startとstopがcronに従って実行され、startで4台にスケールアウト、stopで3台にスケールインするような動きになります。
これでしばらく放置してみます。
実行結果確認
ログを見て、本当に古いインスタンスから削除されているのかを確認します。
ログは以下の実行ログのとおりです。
例えば、直近("StartTime": "2018-02-01T08:10:56.120Z")で停止されたi-ddddddddddddddddを見てみます。
このインスタンスが作成されたのは"StartTime": "2018-01-29T07:35:52.259Z"です。
その時点でのAuto Scaling Groupのインスタンスの起動時刻をそれぞれ表すと以下になります。
インスタンスID |
起動時刻 |
i-ggggggggggggggggg |
2018-02-03T08:05:31.933Z |
i-fffffffffffffffff |
2018-02-03T07:55:38.692Z |
i-eeeeeeeeeeeeeeeee |
2018-02-03T07:45:45.317Z |
i-dddddddddddddddd |
2018-02-03T07:35:52.259Z |
実際に古いものから削除されているようです!
実行ログ
$ aws autoscaling describe-scaling-activities --auto-scaling-group-name kabegiwa_scaling_group --query 'Activities[].{StartTime:StartTime,Descriprtion:Description}'
[
{
"Descriprtion": "Terminating EC2 instance: i-dddddddddddddddd",
"StartTime": "2018-02-03T08:10:56.120Z"
},
{
"Descriprtion": "Executing scheduled action stop",
"StartTime": "2018-02-03T08:10:26.252Z"
},
{
"Descriprtion": "Launching a new EC2 instance: i-ggggggggggggggggg",
"StartTime": "2018-02-03T08:05:31.933Z"
},
{
"Descriprtion": "Executing scheduled action start",
"StartTime": "2018-02-03T08:05:00.074Z"
},
{
"Descriprtion": "Terminating EC2 instance: i-ccccccccccccccccc",
"StartTime": "2018-02-03T08:00:33.408Z"
},
{
"Descriprtion": "Executing scheduled action stop",
"StartTime": "2018-02-03T08:00:03.635Z"
},
{
"Descriprtion": "Launching a new EC2 instance: i-fffffffffffffffff",
"StartTime": "2018-02-03T07:55:38.692Z"
},
{
"Descriprtion": "Executing scheduled action start",
"StartTime": "2018-02-03T07:55:07.006Z"
},
{
"Descriprtion": "Terminating EC2 instance: i-bbbbbbbbbbbbbbbbb",
"StartTime": "2018-02-03T07:50:40.344Z"
},
{
"Descriprtion": "Executing scheduled action stop",
"StartTime": "2018-02-03T07:50:10.562Z"
},
{
"Descriprtion": "Launching a new EC2 instance: i-eeeeeeeeeeeeeeeee",
"StartTime": "2018-02-03T07:45:45.317Z"
},
{
"Descriprtion": "Executing scheduled action start",
"StartTime": "2018-02-03T07:45:13.995Z"
},
{
"Descriprtion": "Terminating EC2 instance: i-aaaaaaaaaaaaaaaaa",
"StartTime": "2018-02-03T07:40:47.193Z"
},
{
"Descriprtion": "Executing scheduled action stop",
"StartTime": "2018-02-03T07:40:17.326Z"
},
{
"Descriprtion": "Launching a new EC2 instance: i-dddddddddddddddd",
"StartTime": "2018-02-03T07:35:52.259Z"
},
{
"Descriprtion": "Executing scheduled action start",
"StartTime": "2018-02-03T07:35:20.733Z"
}
]
おわりに
Auto Scalingでインスタンスを管理すれば、それだけで長期間稼働するインスタンスをなくすことができそうです。