こんにちは!Rookieです。
前回のレシピでは『Amazon EC2編~ELBでAuto Scalingをしてみよう!パート②~』と題して、Auto Scalingをおこなうのに必要なAPIツールのセットアップ方法について記述しました。
今回も引き続き『Amazon EC2編~ELBでAuto Scalingをしてみよう!パート③~』ということで、今回のレシピでは実際にパート②にてセットアップをおこなったAPIツールを使ってAuto Scalingの設定を試していきたいと思います。
なおAuto Scalingの設定をおこなう際、ELBの起動とAMIの作成が必要になりますので用意をされていない場合は、下記のレシピを参照していただき事前準備をおこなっておいてください。
■ Amaon EC2~ELB設定編~
■ Amazon EC2編~SnapshotやAMIを使ったバックアップと運用パート①~
それでは実際に、作業をおこなっていきましょう!
Auto Scalingは、4つの作業をおこなうことで1つのスケーリング設定が完了します。
Amazon Launch Config
1. まず、Auto Scalingの際に起動されるインスタンスの設定をおこないます。
1 2 |
$ as-create-launch-config MyLC --image-id ami-XXXXXXXX --key xxxxx --group xxxxx --instance-type t1.micro OK-Created launch config |
なお、入力する必要がある項目について以下に簡単にまとめておきます。
入力項目 | 内容 |
---|---|
Image-id | 対象インスタンスのAMI-ID |
Key | 対象インスタンスのキーペア |
Gropup | 対象インスタンスのセキュリティグループ |
Instance-type | スケーリング時に起動するインスタンスタイプ |
Auto Scaling Group
2. 次に、Auto Scaling時の基本設定をおこないます。
1 2 3 |
$ as-create-auto-scaling-group MyScaleGroup --launch-configuration MyLC --availability-zones us-east-1a --min-size 1 --max-size 3 --load-balancers MyLB OK-Created AutoScalingGroup |
なお、入力する必要がある項目について以下に簡単にまとめておきます。
入力項目 | 内容 |
---|---|
as-create-auto-scaling-group | 作成するAuto Scaling Groupの任意名称 |
launch-configuration | 設定するLaunch Configurationの任意名称 |
min-size,max-size | Auto Scaling時に起動するインスタンスの最小数と最大数 |
availability-zones | スケーリング時にインスタンスを起動するゾーン |
load-balancers | 対象インスタンスにひもづいているELB |
Auto Scaling Policy
3. 続いて、Auto Scalingの動作を設定します。
※コマンド実行時に返ってくる値は次の設定で使用しますのでメモしておいてください。
1 2 |
$ as-put-scaling-policy MyScaleOutPolicy --auto-scaling-group MyScaleGroup --adjustment=1 --type ChangeInCapacity arn:aws:autoscaling:us-east-1:754870667011:scalingPolicy:77737eb0-9a36-4846-9fca-45c9073ab3a6:autoScalingGroupName/MyScaleGroup:policyName/MyScaleOutPolicy |
なお、入力する必要がある項目について以下に簡単にまとめておきます。
入力内容 | 内容 |
---|---|
as-put-scaling-policy | 設定するAuto Scaling Policyの任意名称 |
Auto-scaling-group | ②の作業で設定したAutoScalingGroupの名称 |
Adjustment | Auto Scalingによって変動するインスタンス数の範囲 |
Metric Alarm
4. 最後に、実際に負荷を受けた時のスケーリング条件について設定します。
1 2 3 4 5 6 7 8 9 10 11 |
$ mon-put-metric-alarm HighCPUAlarm --comparison-operator GreaterThanThreshold --metric-name CPUUtilization --namespace "AWS/EC2" --period 60 --statistic Average --threshold 60 --evaluation-periods 1 --dimensions "AutoScalingGroupName=MyScaleGroup" --alarm-actions arn:aws:autoscaling:us-east-1:754870667011:scalingPolicy:77737eb0-9a36-4846-9fca-45c9073ab3a6:autoScalingGroupName/MyScaleGroup:policyName/MyScaleOutPolicy OK-Created Alarm |
なお、入力する必要がある項目について以下にまとめておきます。
入力項目 | 内容 |
---|---|
mon-put-metric-alarm | 設定するアラームの任意名称 |
metric-name | しきい値として利用する監視項目 |
period | CloudWatchによる監視間隔 |
threshold | CloudWatchが対象とするしきい値 |
evaluation-periods | しきい値オーバーが発生した場合のトリガーの発動回数 |
AutoScalingGroupName | ②の作業で作成したAutoScalingGroupの名称 |
alarm-actions | ③の作業にてメモした値 |
これで、スケールアウトの設定は完了です!
後は実際にJMeter等の負荷テストツールを使用して対象インスタンスに負荷をかけ、設定に問題がなければ正常にスケールアウトされるはずです。
ただ、これだけだとインスタンスがスケールアウトしたらそのまま稼動し続けてしまいます。
負荷が減少してきたら、インスタンスも減っていくようにスケールインの設定もおこなっておきます。
Auto Scaling Policy
1. まずは、スケールイン時の動作について設定します。
1 2 |
$ as-put-scaling-policy MyScaleInPolicy --auto-scaling-group MyScaleGroup --adjustment=-1 --type ChangeInCapacity |
なお、入力する必要がある項目について以下に記述しておきます。
入力項目 | 内容 |
---|---|
as-put-scaling-policy | 設定するスケールインポリシーの任意名称 |
Auto-scaling-group | 作成したAutoScalingGroupの名称 |
Adjustment | スケールインによって変動するインスタンス数の範囲 |
Metric Alarm
2. 続いて、スケールイン条件を指定します。
1 2 3 4 5 6 7 8 9 10 |
$ mon-put-metric-alarm LowCPUAlarm --comparison-operator LessThanThreshold --metric-name CPUUtilization --namespace "AWS/EC2" --period 60 --statistic Average --threshold 10 --evaluation-periods 1 --dimensions "AutoScalingGroupName=MyScaleGroup" --alarm-actions arn:aws:autoscaling:us-east-1:754870667011:scalingPolicy:77737eb0-9a36-4846-9fca-45c9073ab3a6:autoScalingGroupName/MyScaleGroup:policyName/MyScaleOutPolicy |
入力項目 | 内容 |
---|---|
mon-put-metric-alarm | 設定するアラームの任意名称 |
metric-name | しきい値として利用する監視項目 |
period | CloudWatchによる監視間隔 |
threshold | CloudWatchが対象とするしきい値 |
evaluation-periods | しきい値オーバーが発生した場合のトリガーの発動回数 |
AutoScalingGroupName | AutoScaling設定の②の作業で作成したAutoScalingGroupの名称 |
alarm-actions | AutoScaling設定の③の作業にてメモした値 |
いかがでしたでしょうか?
Auto Scalingの設定をおこなっておけば、急な負荷の増大また、負荷が減少した際なども自動で対応することができますので是非、おこなってみてください!
次回は『Amazon CloudWatch編~監視スクリプトを使ってみよう!パート①~』と題して、CloudWatchの監視スクリプトの利用方法についてお話していきたいと思います。
お楽しみに!