Skip to content

ELBとAutoScalingをさわってみる

mechamogera edited this page Nov 7, 2012 · 2 revisions

ELBテスト

  1. EC2セットアップ
  • 違うゾーンのEC2インスタンス作成、起動(22、80、8080ポート開放)
  1. EC2でapache設定
sudo yum install httpd
vi /etc/httpd/conf/httpd.conf # Listen 8080追加
sudo /etc/init.d/httpd start
sudo vi /var/www/html/index.html # インスタンス別に判別できる内容記述
sudo touch /var/www/html/ping
  1. ELB作成
  • httpの80番を振り分け
  • httpの8080番の/pingでヘルスチェックするように設定
  • 設定したEC2インスタンスを割り当てる
  1. LoadBalancing確認
curl http://[ELBのDNS名] # 処理されたインスタンスによって結果が異なる

AutoScalingテスト

AutoScaling設定概要

  • AutoScalingでは以下のような設定を行う
  1. LaunchConfigを設定する
  • スケール時のEC2インスタンスの設定
  1. AutoScalingGroupを設定する
  • スケール時の最大数、最小数、regionの設定、ELBとの結びつけ
  1. ScalingPolicyを設定する
  • スケール時の動作の設定
  1. CloudWatchを設定をする
  • トリガーを設定しスケール時の動作と結びつける

テスト手順

  1. EC2インスタンス作成
  • ELBテストと同じ要領で環境を作成しておく
  • ついでにAutoScalingのコマンドラインツールの環境変数と鍵を設定して使えるようにしておく
  • AutoScalingのコマンドラインツールがproxy越しに実行できないためEC2インスタンス上で操作する
  1. EC2インスタンスのAMI作成
  • ManagementConsoleから行った
  1. LaunchConfig設定
  • 下記の例だと以下のEC2インスタンスを使うように設定
  • 名前:ASTestConfig
  • AMI:ami-7a66d47b
  • type:t1.micro
  • keyPair:awsSample
  • SecurityGroup:quick-start-1
as-create-launch-config ASTestConfig --image-id ami-7a66d47b --instance-type t1.micro --key awsSample --group quick-start-1
  1. AutoScalingGroup設定
  • 下記の例だと以下のようなAutoScalingGroup設定
  • 名前:ASTestGroup
  • 使用するLaunchConfig名:ASTestConfig
  • zone:ap-northeast-1a
  • 最小インスタンス数:1
  • 最大インスタンス数:2
  • 使用するELB名:testLB
as-create-auto-scaling-group ASTestGroup --launch-configuration ASTestConfig --availability-zones ap-northeast-1a --min-size 1 --max-size 2 --load-balancers testLB
  1. 確認
  • この時点でしばらく待つとELBにインスタンスが配置される(最小インスタンス数を1にしているので1つ)
  1. ScalingPolicy設定
  • 下記の例だと以下のようなスケールアップScalingPolicy設定
  • 名前:ASTestScaleupPolicy
  • 使用するAutoScalingGroup名:ASTestGroup
  • スケール幅:1
  • スケール幅の種類:ChangeInCapacity(個数)
  • 次回のスケールまでの待機時間:300s
  • region:ap-northeast-1
as-put-scaling-policy ASTestScaleupPolicy --auto-scaling-group ASTestGroup --adjustment=1 --type ChangeInCapacity --cooldown 300 --region ap-northeast-1
  • 下記の例だとスケールダウンScalingPolicy設定
as-put-scaling-policy ASTestScaledownPolicy --auto-scaling-group ASTestGroup --adjustment=-1 --type ChangeInCapacity --cooldown 300 --region ap-northeast-1
  1. CloudWatchの設定
  • ManagementConsoleから行った
  1. Alermを新規作成
  2. 「EC2:Aggregated by Auto Scaling Group」からASTestGroupの「CPUUtilization」選択 * CPU使用率でスケールアップ、スケールダウンするため
  3. CPUUtilization >= 40 for 5 minutesを設定
  4. stateがALARM(CPU使用率が40%以上)の場合、ASTestGroupのASTestScaleupPolicyを実行するように設定
  5. 同様にCPU使用率が10%以下ならASTestScaledownPolicyを実施するように設定
  6. 確認
  • 適当なELB下のインスタンスでCPU使用率を上げるとインスタンス数が2になることを確認
  • 以下のようなRubyスクリプトで負荷調整
while true
  puts "test"
end
  • 上記スクリプトを停止するとインスタンス数が1になることを確認
  1. 後始末
  2. CloudWatchをManagementConsoleから削除
  3. ELBのインスタンスを0に
  • 0にしないとAutoScalingGroupを削除できない
  • そのままだとインスタンスを停止してもまた作られてしまう
as-update-auto-scaling-group ASTestGroup --min-size 0 --max-size 0
  1. 一連の削除
as-delete-auto-scaling-group ASTestGroup
as-delete-launch-config ASTestConfig
Clone this wiki locally