ELBとAutoScalingをさわってみる - mechamogera/MyTips GitHub Wiki
ELBテスト
- EC2セットアップ
- 違うゾーンのEC2インスタンス作成、起動(22、80、8080ポート開放)
- 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
- ELB作成
- httpの80番を振り分け
- httpの8080番の/pingでヘルスチェックするように設定
- 設定したEC2インスタンスを割り当てる
- LoadBalancing確認
curl http://[ELBのDNS名] # 処理されたインスタンスによって結果が異なる
AutoScalingテスト
AutoScaling設定概要
- LaunchConfigを設定する
- AutoScalingGroupを設定する
- スケール時の最大数、最小数、regionの設定、ELBとの結びつけ
- ScalingPolicyを設定する
- CloudWatchを設定をする
テスト手順
- EC2インスタンス作成
- ELBテストと同じ要領で環境を作成しておく
- ついでにAutoScalingのコマンドラインツールの環境変数と鍵を設定して使えるようにしておく
- AutoScalingのコマンドラインツールがproxy越しに実行できないためEC2インスタンス上で操作する
- EC2インスタンスのAMI作成
- 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
- 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
- 確認
- この時点でしばらく待つとELBにインスタンスが配置される(最小インスタンス数を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
- CloudWatchの設定
- Alermを新規作成
- 「EC2:Aggregated by Auto Scaling Group」からASTestGroupの「CPUUtilization」選択
* CPU使用率でスケールアップ、スケールダウンするため
- CPUUtilization >= 40 for 5 minutesを設定
- stateがALARM(CPU使用率が40%以上)の場合、ASTestGroupのASTestScaleupPolicyを実行するように設定
- 同様にCPU使用率が10%以下ならASTestScaledownPolicyを実施するように設定
- 確認
- 適当なELB下のインスタンスでCPU使用率を上げるとインスタンス数が2になることを確認
- 以下のようなRubyスクリプトで負荷調整
while true
puts "test"
end
- 上記スクリプトを停止するとインスタンス数が1になることを確認
- 後始末
- CloudWatchをManagementConsoleから削除
- ELBのインスタンスを0に
- 0にしないとAutoScalingGroupを削除できない
- そのままだとインスタンスを停止してもまた作られてしまう
as-update-auto-scaling-group ASTestGroup --min-size 0 --max-size 0
- 一連の削除
as-delete-auto-scaling-group ASTestGroup
as-delete-launch-config ASTestConfig