今回は、先日書籍(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)監修のもと掲載しています。
元記事は、こちら