web-dev-qa-db-ja.com

メモリ使用率に基づいたAWSEC2インスタンスの自動スケーリング

特定のインスタンスによって消費されたメモリに基づいて自動スケーリングを設定しています。 awsforums に投稿されたリンクを確認しました。メトリックを設定し、指定された同じ変数でbashスクリプトを使用することができました。

これらのメトリックに基づいて自動スケーリングを設定する方法を理解する中で、私は googleプロジェクトホスティングサイト でbashスクリプトの束について知るようになりました。指標を設定できません。

どうすればさらに先に進むことができますか?

Image showing 4 Cloudwatch alarms do not have enough data to be evaluated

3
Jeevan Dongre

メモリメトリクスをCloudwatchに記録したら、既存のメトリクスの場合と同じように自動スケーリングを設定する必要があります。

まず、すべてのAWSコマンドラインツールと同様に、次のいずれかを設定(エクスポート)する必要があります。

  • AWS_CREDENTIAL_FILEまたは
  • 両方:EC2_PRIVATE_KEYとEC2_CERT

次に、次の3つのコマンドを実行し、必要に応じて変更します(これらは、cronからではなくコマンドラインから1回だけ実行されます)。

起動構成を作成します:少なくともイメージとインスタンスタイプを渡す必要があります。追加のパラメーターはオプションですが、おそらく良い考えです。

as-create-launch-config
        LaunchConfigurationName  --image-id  value  --instance-type  value
       [--block-device-mapping  "key1=value1,key2=value2..." ] [--kernel  value]
       [--key  value ] [--ramdisk  value ] [--group  value[,value...] ]
       [--user-data  value ] [--user-data-file  value ]  [General Options]

例えば:

as-create-launch-config config-name --image-id AMI-xxxxxxxx --instance-type m1.small --key keypair-name --group security-group-name

自動スケーリンググループを作成します:ここでは、スケーリングのパラメーターを定義します-インスタンスが起動される場所、インスタンス数の制限、およびグループの関連付け作成した構成で。

as-create-auto-scaling-group
        AutoScalingGroupName  --availability-zones  value[,value...]
        --launch-configuration  value  --max-size  value  --min-size  value
       [--cooldown  value ] [--load-balancers  value[,value...] ]
        [General Options]

例えば:

as-create-auto-scaling-group as-group-name --availability-zones us-east-1a --launch-configuration config-name --min-size 1 --max-size 5 --cooldown 300

(最小サイズと異なる場合は、開始するインスタンスの数である--desired-capacityを指定することもできます)

スケーリングするポリシーを作成します:ここでは、アラームがトリガーされたときに実行されるアクションを定義し、ポリシーを特定の自動スケーリンググループに関連付けます。スケールアップ用とスケールダウン用のポリシーを1つずつ作成します。

as-put-scaling-policy
        PolicyName  --type  value  --auto-scaling-group  value  --adjustment
       value [--cooldown  value ]  [General Options]

このコマンドは、ポリシーをクラウドウォッチアラームに関連付けるために必要となるARNを出力します。ARNを書き留めます。各コマンドは異なるARNを返します(つまり、2つのARNがあります)。どちらがどのポリシーに対応しているかを覚えておいてください。

例えば:

拡大する:

 as-put-scaling-policy HighMemPolicy --auto-scaling-group as-group-name  --adjustment=1 --type ChangeInCapacity  --cooldown 300

スケールダウン:

as-put-scaling-policy LowMemPolicy --auto-scaling-group as-group-name  --adjustment=-1 --type ChangeInCapacity  --cooldown 300

戻り例:

POLICY-ARN arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567

ケースごとにCloudwatchアラームを作成します:収集したデータを使用して特定の状況でアラームをトリガーし、そのアラームに適切なスケーリングを実行させる必要がありますポリシー。 2つのアラームが必要になります。1つは上限しきい値用、もう1つは下限しきい値用です。

mon-put-metric-alarm
        AlarmName  --comparison-operator  value  --evaluation-periods  value
        --metric-name  value  --namespace  value  --period  value  --statistic
       value  --threshold  value [--actions-enabled  value ] [--alarm-actions
       value[,value...] ] [--alarm-description  value ] [--dimensions
       "key1=value1,key2=value2..." ] [--insufficient-data-actions
       value[,value...] ] [--ok-actions  value[,value...] ] [--unit  value ]
        [General Options]

例えば:

上限しきい値:

mon-put-metric-alarm HighMemAlarm  --comparison-operator  GreaterThanThreshold  --evaluation-periods  4 --metric-name  UsedMemoryPercent  --namespace  "AWS/EC2"  --period  60  --statistic Average --threshold  85 --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/abc-1234-def-567 --dimensions "AutoScalingGroupName=as-group-name"

下限しきい値:

mon-put-metric-alarm LowMemAlarm  --comparison-operator  LessThanThreshold --evaluation-periods  4 --metric-name  UsedMemoryPercent --namespace  "AWS/EC2"  --period  60  --statistic Average --threshold  60  --alarm-actions arn:aws:autoscaling:us-east-1:0123456789:scalingPolicy/bcd-2345-efg-678 --dimensions "AutoScalingGroupName=as-group-name"

上記の例では、(フォーラムスクリプトからの)メトリック「UsedMemoryPercent」を使用しており、「60秒以上の平均」を調べています。最初のアラームでは、その平均が4つの連続したサンプル(つまり4分)で85%を超えると、アラームをトリガーします(そしてアクションを実行します)。2番目のアラームでは、「60%未満」を探します。

良い参考資料は次のとおりです:

--helpを指定してコマンドを実行し、パラメーターの詳細を確認します。

4
cyberx86

私が提供したテンプレートスクリプトを利用できます ここ これは、EC2インスタンス自体から自動スケーリングを行うのと同じ方法だからです。 <SEND_INFORMATION_GATHERED_BY_EMAIL_HERE>行の直後に自動スケーリングする特定のコマンドを追加するだけで済みます。これは、何が何を引き起こしているのかも知りたいからです。ただし、EC2インスタンス内に必要なAWS提供のツールがあることを確認してください。

幸運を!

0
bintut