takachan's blog

地方のエンジニアが、まずやってみる(Bias For Action)!!をモットーに気持ちを綴るブログです。

aws-cliを使ったAuto Scalingの薄い説明書

こんにちは。
近所の会場で開催されるHey!Say!JUMPのライブに行く女子の多さに驚いた、
ニイヌマ(twinuma)です。


さて、前回のエントリーでaws-cliのインストールと設定手順までについて書きました。
EC2 API ToolおよびPython版CLIインストール・設定手順まとめ

aws-cliが使えるようになったので、次はAutoScalingについて調べてみました。
ちなみに、"AutoScaling"とは、

定義する条件に応じて、Amazon EC2 の能力を、自動的に縮小・拡張することができます。Auto Scaling では、お客様が使用中の Amazon EC2 インスタンスの数を、需要が急上昇した時はシームレスに増やしてパフォーマンスを維持し、需要が弱まる時に自動的に減らすことにより、コストを最小化することができます。

簡単に言うと、自動でサーバを必要なときに必要なだけ増やして要らなくなったら減らすということです。

参考資料

こちら、オススメです!


以下のコマンドで使用可能な一覧は、こちらです。

aws autoscaling


上記のスライドを参考に、以下のコマンドをaws-cliで実行してみます(`・ω・´)ゞ

  • 設定項目
    • Launch Configuration
    • Auto Scaling Group
    • Scale Out/In Policy
    • Scale Out/In Alarm
# Launch Configuration
aws autoscaling create-launch-configuration  --launch-configuration-name myLC --image-id ami-8538b384 --instance-type t1.micro --key-name awskey --security-groups ELB_EC2

# Auto Scaling Group
aws autoscaling create-auto-scaling-group --auto-scaling-group-name demo-asg --launch-configuration-name myLC --availability-zones ap-northeast-1b --min-size 2 --max-size 4 --load-balancer-names hogeELB --health-check-grace-period 30

# Scale Out Policy
aws autoscaling put-scaling-policy --policy-name demo-policy --auto-scaling-group-name demo-asg --scaling-adjustment 2 --adjustment-type ChangeInCapacity  

# Scale In Policy
aws autoscaling put-scaling-policy --policy-name demo-scalin --auto-scaling-group-name demo-asg --scaling-adjustment -2  --adjustment-type ChangeInCapacity --cooldown 600

# Scale Out/In Alarm
ここ分かりませんでしたm(_ _)m


上記にも記述した通り、Scale Out/In Alarmの設定コマンドはどれを使うか分かりませんでした。
AWSドキュメントにも記載がないのでご存知の方がいらっしゃいましたらコメント下さい。

追記:2013/06/23
c9katayamaさんから、

でしたね・・・お恥ずかしい。

気を取り直しして、Scale Out/In Alarmはこちらのコマンドを実行します。

# Scale Out Alarm
aws cloudwatch put-metric-alarm --period 300 --alarm-name demo-scal-out-alerm --dimensions name=AutoScalingGroupName,value=demo-asg --namespace "AWS/EC2" --metric-name CPUUtilization --evaluation-periods 1 --statistic Average --threshold 70 --comparison-operator GreaterThanThreshold --alarm-actions arn:aws:autoscaling:ap-northeast-1:XXXXXXXXXXXX:scalingPolicy:9f1c0e48-2f85-44ba-bff3-f166fcd3a124:autoScalingGroupName/demo-asg:policyName/demo-policy

# Scale In Alarm
aws cloudwatch put-metric-alarm --period 300 --alarm-name demo-scal-in-alerm --dimensions name=AutoScalingGroupName,value=demo-asg --namespace "AWS/EC2" --metric-name CPUUtilization --evaluation-periods 1 --statistic Average --threshold 70 --comparison-operator GreaterThanThreshold --alarm-actions arn:aws:autoscaling:ap-northeast-1:XXXXXXXXXXXX:scalingPolicy:c3fbb90a-ea54-48da-aaac-8d21dfe6404e:autoScalingGroupName/demo-asg:policyName/demo-scalin

aws-cliはJSON形式なので、[name=String,value=String]という形式でパラメータを設定します。

以下のコマンドで使用可能な一覧は、こちらです。

aws cloudwatch


f:id:twinuma:20130623203418p:plain


今回、作成した設定を削除する場合は以下のコマンドを実行します。
尚、削除する順序が大切なので注意しましょう。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name demo-asg --min-size 0 --max-size 0
aws autoscaling delete-policy --policy-name demo-policy --auto-scaling-group-name demo-asg
aws autoscaling delete-policy --policy-name demo-scalin --auto-scaling-group-name demo-asg
aws cloudwatch delete-alarms --alarm-names demo-scal-out-alerm
aws cloudwatch delete-alarms --alarm-names demo-scal-in-alerm
aws autoscaling delete-auto-scaling-group --auto-scaling-group-name demo-asg
aws autoscaling delete-launch-configuration --launch-configuration-name myLC


「やってみた」系の記事になってしまいましが、

_人人人人人人人人人人人人人人_
> 難しいのでペンディング <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

ってなってしまった方が、一度見てくれればいいかなと思ってます。

最後に、Hey!Say!JUMPのLIVE会場へ向かうバスはAutoScalingしないのでバス待ち行列が凄かったです。