今回は、先日書籍(Amazon Web Servicesクラウドデザインパターン設計ガイド)が発売されたCloud Design Pattern(CDP)の記事になります。
対象は「Scale Outパターン」です。
このパターンの「実装」に下記の記載があります。
ロードバランサ―サービス「ELB」、モニタリングツール「CloudWatch」
そして自動でスケールアウトする「Auto Scaling」の三つのサービスを組み合わせることで、負荷に応じて自動でスケールアウトするシステムを容易に構築できる。
コマンドラインツールでのAuto Scalingは以前、Auto Scaling API Tools(Auto Scalingのコマンドラインツール)、Auto Scaling API Toolsを使ってみる(中途半端…)の記事のように紹介しましたが今回は、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
コマンドが正常に実行できれば、問題ありません。
# 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を増やすと、増やした値までEC2インスタンスが増加します。
# as-set-desired-capacity vpc-ag > --desired-capacity 4 OK-Desired Capacity Set
# 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