1.想定構成と今回やりたかった事
ごくごく当たり前の構成でのお話です。
ELB配下にWebサーバを並べ、Multi-AZ構成を取っています。
Webサーバは50台でした。
とある事情があり、これらのWebサーバをAutoScalingGroupからデタッチする必要がありました。
そのときに遭遇した事象を共有します。
2.想定外①:デタッチ上限数 = 20台
AWSの仕様だと思いますが、一度にデタッチできる上限は20台
だそうです。
Management Consoleで該当AutoScalingGroupの[Instances]を見ると、
1ページに20台表示され、ページングされてます。
結果的にはこれが上限値なんですね。
3.想定外②:AWSは、AZのインスタンス数偏りを自動補正する
一度に20台しかデタッチできないことがわかったので、
とりあえず20台-20台-10台でデタッチすればいいかと思い、まず20台のインスタンスをデタッチしようとしました。
すると、残った30台のインスタンスのうち、
何台か勝手にTerminateされ、Terminateされたインスタンス分、新規Launchされた
のです。
正直これには焦りました。
AutoScalingGroupは、Multi-AZ構成を取っていた場合、それぞれのAZに存在するインスタンス数のバランスを取ろうとします。
つまり、20台デタッチした後の残りの30台のインスタンスのAZバランスが崩れてしまったため、その調整を行うために、AWSが自動的にTerminate - Launchしたのです。
例えば30台のバランスがAz-aが18台、AZ-cが-12台となった場合、AZ-aの3台をTerminateし、AZ-cに3台Launchする挙動をします。
厳密にこのような挙動を取るかどうかは未確認ですので、誤りあればご指摘ください。