2012年9月19日水曜日

コマンドラインツール使ってVPCで"Auto Scaling"

スズキです。

CDPネタです。今回の対象は「Scale Outパターン」です。



このパターンの「実装」に
ロードバランサ―サービス「ELB」、モニタリングツール「CloudWatch」、
そして自動でスケールアウトする「Auto Scaling」の三つのサービスを
組み合わせることで、負荷に応じて自動でスケールアウトするシステムを
容易に構築できる。
といった記載があります。

コマンドラインツールでの"Auto Scaling"は以前、下記のように紹介しましたが
今回は、VPC環境で試してみました。

まずはインストールです。

下記のようにダウンロードして展開します。
# cd /opt
# curl -OL http://ec2-downloads.s3.amazonaws.com/AutoScaling-2011-01-01.zip
# unzip AutoScaling-2011-01-01.zip
# ln -s AutoScaling-1.0.61.1 AutoScaling

そして、キー情報をファイルに保存します。("IAM Role"も使えると思います)
# cd AutoScaling
# cp credential-file-path.template credential-as.txt
# cat credential-as.txt
AWSAccessKeyId=XXXXXXXX
AWSSecretKey=YYYYYYYY

環境変数も各種設定しておきます。
# export JAVA_HOME=/usr/lib/jvm/jre
# export AWS_AUTO_SCALING_HOME=/opt/AutoScaling
# export AWS_CREDENTIAL_FILE=$AWS_AUTO_SCALING_HOME/credential-as.txt
# export AWS_AUTO_SCALING_URL=https://autoscaling.ap-northeast-1.amazonaws.com
# export PATH=$PATH:$AWS_AUTO_SCALING_HOME/bin

コマンドが正常に実行できれば、OKです。
# as-version 
Amazon AutoScaling CLI version 1.0.61.1 (API 2011-01-01)

次にVPCでの"Auto Scaling"です。

最初に"Launch Config"の作成です。
# as-create-launch-config vpc-lc \
> --image-id ami-f8fc41f9 \
> --group sg-40a7b72c,sg-877c60eb \
> --instance-type m1.small
OK-Created launch config
注意点として、"--group"オプションで指定するセキュリティグループは、
VPCの場合、セキュリティグループ名ではなく、セキュリティグループIDとなります。

そして"AutoScaling Group"の作成です。
# as-create-auto-scaling-group vpc-ag \
> --launch-configuration vpc-lc \
> --tag "k=Name, v=VPC-AS, p=true" \
> --load-balancers test \
> --health-check-type ELB \
> --grace-period 60 \
> --availability-zones ap-northeast-1a,ap-northeast-1b \
> --min-size 0 \
> --max-size 4 \
> --desired-capacity 0 \
> --vpc-zone-identifier subnet-9bd939f2,subnet-1eda3a77
OK-Created AutoScalingGroup

注意点として、"--vpc-zone-identifier"オプションでは対象のサブネットを指定します。

また、直感的に分かりにくい部分として下記を挙げておきます。
  • --tag の p : "true"にすると新規に立ち上げたEC2インスタンスのみにタグをつけます。
  • --health-check-type : EC2とELBが選択できELBだとELBのヘルスチェックで
    "Auto Scaling"の死活監視を行います。(ELBの場合"--grace-period"も必要になります)
  • --grace-period : EC2インスタンスが立ち上がって"Auto Scaling"の死活監視が開始されるまでの時間です。 
これで"Auto Scaling"の設定は、いったん終了です。

"Desired Capacity"を増やすと、
# as-set-desired-capacity vpc-ag \
> --desired-capacity 4
OK-Desired Capacity Set

増やした値までEC2インスタンスが増加します。
# as-describe-auto-scaling-instances
INSTANCE  i-7058aa73  vpc-ag  ap-northeast-1b  InService  HEALTHY  vpc-lc
INSTANCE  i-7258aa71  vpc-ag  ap-northeast-1b  InService  HEALTHY  vpc-lc
INSTANCE  i-7858aa7b  vpc-ag  ap-northeast-1a  InService  HEALTHY  vpc-lc
INSTANCE  i-7a58aa79  vpc-ag  ap-northeast-1a  InService  HEALTHY  vpc-lc

最後に"Auto Scaling"の設定を削除します。

まずは"Desired Capacity"を0にして"、"AutoScaling Group"中の
EC2インスタンス数を0にします。
# as-set-desired-capacity vpc-ag \
> --desired-capacity 0
OK-Desired Capacity Set
# as-describe-auto-scaling-instances
No instances found

次に"AutoScaling Group"を削除します。
# as-delete-auto-scaling-group vpc-ag    
    Are you sure you want to delete this AutoScalingGroup? [Ny]y
OK-Deleted AutoScalingGroup

その後"Launch Config"も削除すれば、きれいになります。
# as-delete-launch-config vpc-lc
    Are you sure you want to delete this launch configuration? [Ny]y
OK-Deleted launch configuration

次はポリシー...
--------
http://www.suz-lab.com

0 コメント: