share facebook facebook twitter menu hatena pocket slack

2012.11.15 THU

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

鈴木 宏康

WRITTEN BY 鈴木 宏康

今回は、先日書籍(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

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。