-
Notifications
You must be signed in to change notification settings - Fork 4
ELBとAutoScalingをさわってみる
mechamogera edited this page Nov 7, 2012
·
2 revisions
- 以下のサイトが参考になる
- ELB & Auto Scaling & CloudWatch 詳細 ほぼ週刊AWSマイスターシリーズ第5回
- ELBについてとことん理解する
- その他TIPS
- AWS Developer Forums: ELB経由のサーバアクセスをSecurityGroupsで制限する方法
- ELB : バックエンドのWebサーバのログに、クライアントIPを表示させる - aws memo
- Amazon ELBをうまくつかうには、KeepAliveを有効にしよう。Timeoutは60秒よりだいぶ長くしよう。その背景。 « debiancdn
- Route53の新機能によって解決したELBの大きな問題 TecTec Cloud
- 【AWS発表】プライベートIPを負荷分散できるELBが登場! - Amazon Web Services ブログ
- Elastic Load Balancerをつかってwebsocketを処理する方法 « debiancdn
- 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名] # 処理されたインスタンスによって結果が異なる
- Amazon WebserviceのAuto Scalingの設定についてが参考になった
- 他に参考になる情報もあるがas-create-or-update-triggerコマンドは廃止されている
- AutoScaling設定・管理は現状Management Consoleからできない
- AutoScalingでは以下のような設定を行う
- LaunchConfigを設定する
- スケール時のEC2インスタンスの設定
- AutoScalingGroupを設定する
- スケール時の最大数、最小数、regionの設定、ELBとの結びつけ
- ScalingPolicyを設定する
- スケール時の動作の設定
- CloudWatchを設定をする
- トリガーを設定しスケール時の動作と結びつける
- EC2インスタンス作成
- ELBテストと同じ要領で環境を作成しておく
- ついでにAutoScalingのコマンドラインツールの環境変数と鍵を設定して使えるようにしておく
- AutoScalingのコマンドラインツールがproxy越しに実行できないためEC2インスタンス上で操作する
- EC2インスタンスのAMI作成
- ManagementConsoleから行った
- 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の設定
- ManagementConsoleから行った
- 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