【新機能】Auto Scaling groupのインスタンスに新しい状態「Standby State」が追加されました。

AWS Auto Scaling

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、せーのです。
今回は本日Auto Scalingに機能追加が発表になりまして、結構大きめの機能追加なので弊社内でもざわざわしています。
私からはその新機能の中から「Standby State」をご紹介致します。

Standby Stateってなんだ

「Standby State」とは、字面でなんとなくわかると思いますが「スタンバイ状態」の事です。
例えばAuto Scalingで一台だけ何か動きがおかしいので調べたい、またはA/Bテストをするために一旦Auto Scalingからは切り離して作業をし、またAuto Scalingに戻したい。といった時にインスタンスを一旦「スタンバイ状態」に移動することでAuto Scalingから切り離すことが出来るようになったのです。
ちなみに「スタンバイ状態」に切り離した時にトータルでAuto Scalingとして動いている台数を変更するかしないかも選択できちゃうんですよ!
では軽く検証してみましょう。

仕組みをおぼえよう

まずはAuto Scalingのコマンドラインツールを落としてきます。Management Consoleではまだできないみたいですね。コマンドラインツールからやってみましょう。
落としてきたコマンドラインツールのコマンド一覧を覗いてみるといくつか増えてるようですね。

stanbystate0

今回はこの中から「as-enter-standby」と「as-exit-standby」を使用します。

as-enter-standby

まずは「as-enter-standby」です。これは現在Auto Scaling上で動いているインスタンスをStandby状態に移動します。 引数としては

as-enter-standby [インスタンスID(複数ある場合はリスト形式で)] --auto-scaling-group [Auto Scaling GroupのName] [--decrement-desired-capacity もしくは --no-decrement-desired-capacity] [接続に必要な残りのプロパティ]

こんな感じです。
ポイントとなるのは「--decrement-desired-capacity」「--no-decrement-desired-capacity」です。これはインスタンスをスタンバイ状態にした後、Auto Scalingの状態を維持させるかどうかを選択するものです。「-decrement-desired-capacity」では1台インスタンスをスタンバイ状態に変更したらそのままAuto Scalingからはインスタンスが1台減ります。「--no-decrement-desired-capacity」を選択するとスタンバイ状態にした台数分だけAuto Scaling Groupが自動的にインスタンスを補完します。

as-exit-standby

次に「as-exit-standby」です。こちらはスタンバイ状態になっているインスタンスをAuto Scaling Groupに戻してやるコマンドです。

as-exit-standby [インスタンスID(複数ある場合はリスト形式で)] --auto-scaling-group [Auto Scaling GroupのName] [接続に必要な残りのプロパティ]

こちらは単純に追加するのみですので台数が減っている、増えているは特に気にしません。
大体仕組みはわかりましたでしょうか。ではやってみましょう。

やってみた

まずはManagement ConsoleからAuto Scalingを作ってみます。今回はシングルAZに3台作ってみます。

stanbystate1

インスタンスはこんな感じになります。

stanbystate2

現在は3台がInServiceになっています。

stanbystate3

ここから1台Standby状態にします。

as-enter-standby i-36ba8130 --auto-scaling-group autoscalinggrouptest --no-decrement-desired-capacity --I <APIキー> --S <APIシークレットキー> --region ap-northeast-1


INSTANCE  580a5250-1a73-464f-a1d4-810d9ed589ff  InProgress  At 2014-07-31T01:30:16Z instance i-36ba8130 was moved to standby in response to a user request.

スタンバイ状態になったようです。Management Consoleで確認してみます。

standbystate4

3台をキープしようとして1台追加されているのがわかります。次にこのスタンバイ状態のインスタンスを戻してみましょう。

as-exit-standby i-36ba8130 --auto-scaling-group autoscalinggrouptest --I <APIキー> --S <APIシークレットキー> --region ap-northeast

-1INSTANCE  9bb00e94-42c2-4e26-a65e-6c4d56a7ad8d  PreInService  At 2014-07-31T01:33:04Z instance i-36ba8130 was moved out of standby in response to a user request, increasing the capacity from 3 to 4.

standbystate5

戻りました。先ほどのと合わせて4台になっています。次は--decrement-desired-capacityで1台スタンバイ状態にしてみましょう。

as-enter-standby i-36ba8130 --auto-scaling-group autoscalinggrouptest --decrement-desired-capacity --I <APIキー> --S <APIシークレットキー> --region ap-northeast-1

INSTANCE  b0c87a2a-d655-47b3-bfa3-61eddda33db9  InProgress  At 2014-07-31T01:34:27Z instance i-36ba8130 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.

standbystate6

再びスタンバイ状態になりましたが、今度は補完するようなインスタンスの追加は見られません。

まとめ

いかがでしたか。他にも今回の機能追加ではAuto Scaling Groupからインスタンスを取り外せるようになったりと、より柔軟な運用が可能になったAuto Scaling。皆さんも是非お使いになってみてください。