ターゲットトラッキングスケーリングポリシー Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling (日本語)

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

ターゲットトラッキングスケーリングポリシー Amazon EC2 Auto Scaling

ターゲットトラッキングスケーリングポリシーでは、スケーリングメトリックを選択し、目標値を設定します。 Amazon EC2 Auto Scaling は、 CloudWatch スケーリングポリシーをトリガーし、メトリックとターゲット値に基づいてスケーリング調整を計算するアラーム。スケーリングポリシーは、指定されたターゲット値、またはそれに近い値にメトリクスを維持するために、必要に応じて容量を追加または削除します。ターゲット追跡スケーリングポリシーは、メトリクスをターゲット値に近い値に維持することに加えて、変化するロードパターンによるメトリクスの変化に適応します。

たとえば、ターゲット追跡スケーリングを使用して以下のことが可能です。

  • ターゲットの追跡スケーリングポリシーを設定して、Auto Scaling グループの平均集計 CPU 使用率を 40 パーセントに維持する。

  • ターゲットトラッキングスケーリングポリシーを構成して、 Application Load Balancer ターゲットグループを1000に Auto Scaling グループ。

アプリケーションのニーズに応じて、ターゲット追跡を使用するときにこれらのよく使用されるスケーリングメトリクスのうちの 1 つが最適に機能することや、これらのメトリクスの組み合わせまたは別のメトリクスがニーズに合っていることがわかります。

Considerations

ターゲット追跡スケーリングポリシーを作成する前に、 Auto Scaling ターゲットトラッキングスケーリングポリシーの次の特性と動作を理解しておく必要があります。

  • ターゲットの追跡スケーリングポリシーでは、指定されたメトリクスがターゲット値を超えている場合、Auto Scaling グループをスケールアウトする必要があるとみなされます。指定されたメトリクスがターゲット値を下回っている場合、ターゲット追跡スケーリングポリシーを使用して Auto Scaling グループをスケールアウトすることはできません。

  • ターゲット値と実際のメトリクスデータポイント間にギャップが発生する場合があります。これは、追加または削除するインスタンス数を決定するときに、その数を切り上げまたは切り捨てて常に控えめに動作するためです。これにより、不十分な数のインスタンスを追加したり、インスタンスを過剰に削除したりすることがなくなります。ただし、インスタンス数が少ない、より小さな Auto Scaling グループでは、グループの使用率はターゲット値からかなり離れているように見える場合があります。たとえば、CPU 使用率に 50 パーセントのターゲット値を設定し、Auto Scaling グループがそのターゲットを超過した場合です。1.5 インスタンスを追加することで CPU 使用率が 50 パーセント近くに減少すると判断される場合があります。1.5 インスタンスを追加することはできないので、これを切り上げて、2 インスタンスを追加します。これにより、CPU 使用率は 50 パーセント未満の値に下がる可能性がありますが、アプリケーションをサポートする十分なリソースが確保されます。同様に、1.5 インスタンスを削除することで CPU 使用率が 50 パーセントを超えると判断した場合、1 インスタンスのみを削除します。

  • より多くのインスタンスのある大規模な Auto Scaling グループの場合、使用率はより多くのインスタンス間で分散されます。その場合、インスタンスの追加または削除により、ターゲット値と実際のメトリクスデータポイントとの差が小さくなります。

  • アプリケーションの可用性を高めるために、Auto Scaling グループのスケールアウトはメトリクスに比例して可能な限り高速に行われますが、スケールインはより緩やかです。

  • それぞれが異なるメトリクスを使用していれば、Auto Scaling グループに対して複数のターゲット追跡スケーリングポリシーを設定できます。の意図 Amazon EC2 Auto Scaling は常に可用性を優先するため、ターゲットのトラッキング・ポリシーがスケールアウトまたはスケール・インの準備ができているかによって動作が異なります。ターゲット追跡ポリシーのいずれかでスケールアウトする準備ができると、Auto Scaling グループがスケールアウトされますが、すべてのターゲット追跡ポリシー (スケールイン部分が有効) でスケールインする準備ができている場合にのみスケールインされます。詳細については、「」を参照してください。複数の拡張ポリシー.

  • ターゲットの追跡スケーリングポリシーのスケールイン部分を無効にすることもできます。この機能により、別の方法を使用して Auto Scaling グループをスケールインできる柔軟性が得られます。たとえば、スケールアウトにはターゲット追跡スケーリングポリシーを使用しながら、別のスケーリングポリシータイプを使用してスケールインできます。

  • 編集や削除はしないでください。 CloudWatch ターゲットトラッキングスケーリングポリシーに対して構成されているアラーム。 CloudWatch ターゲットトラッキングスケーリングポリシーに関連付けられているアラームは、AWSによって管理され、不要になると自動的に削除されます。

メトリックの選択

ターゲット追跡スケーリングポリシーでは、定義済みのメトリクスまたはカスタマイズされたメトリクスを使用できます。

以下の事前定義されたメトリクスを使用できます。

  • ASGAverageCPUUtilization—の平均CPU使用率 Auto Scaling グループ。

  • ASGAverageNetworkIn—すべてのネットワークインタフェースで によって受信された平均バイト数 Auto Scaling グループ。

  • ASGAverageNetworkOut—すべてのネットワーク インターフェイスで によって送信された平均バイト数 Auto Scaling グループ。

  • ALBRequestCountPerTarget—のターゲットごとに完了したリクエストの数 Application Load Balancer ターゲットグループ。

利用可能な他のオプションを選択できます Amazon CloudWatch メトリックまたは自分のメトリック CloudWatch カスタマイズしたメトリックを指定することによって、カスタマイズされたメトリクスでターゲット追跡ポリシーを作成するには、AWS CLI または AWS SDK を使用する必要があります。

メトリクスを選択するときは、以下の点に注意してください。

  • すべてのメトリクスがターゲット追跡に使用できるわけではありません。これは、カスタマイズされたメトリクスを指定する場合に重要になる場合があります。メトリクスは有効な使用率メトリクスであり、インスタンスの使用頻度を指定する必要があります。メトリクス値は Auto Scaling グループのインスタンス数に比例して増減する必要があります。それにより、メトリクスデータを使用して比例的にインスタンス数をスケールアウトまたはスケールインできます。たとえば、 Auto Scaling グループ(つまり、 Amazon EC2 メトリックメトリック CPUUtilization メトリックのディメンション AutoScalingGroupName)、 Auto Scaling グループはインスタンス全体に分散されます。

  • 以下のメトリクスはターゲットの追跡では機能しません。

    • ロードバランサーが Auto Scaling グループ(つまり、 Elastic Load Balancing メトリックメトリック RequestCount)。ロードバランサーによって受信されたリクエストの数は、Auto Scaling グループの使用率に基づいて変化しません。

    • ロードバランサーのリクエストのレイテンシー (Elastic Load Balancing メトリクス )。Latency). リクエストのレイテンシーは、使用率の増加により増える場合がありますが、必ずしも比例して変化するわけではありません。

    • は、 CloudWatch Amazon SQS キュー メトリックキューメトリック ApproximateNumberOfMessagesVisible。 キュー内のメッセージ数は、 Auto Scaling キューからのメッセージを処理するグループ。ただし、Auto Scaling グループの EC2 インスタンスごとにキュー内のメッセージの数を測定するカスタマイズされたメトリクスは機能します。詳細については、「」を参照してください。スケール基準 Amazon SQS.

  • ターゲットトラッキングスケーリングポリシーは、 Auto Scaling 指定したメトリックのデータが不十分である場合に、 ALBRequestCountPerTarget メトリック。これは、ALBRequestCountPerTarget メトリクスから関連データのない期間にゼロが発行され、ターゲット追跡ポリシーでは、低い使用率の傾向と見なすためのメトリクスデータが必要なためです。ターゲットグループにリクエストがルーティングされないときに Auto Scaling グループを 0 インスタンスにスケールインするには、グループの最小容量を 0 に設定する必要があります。

  • を使用するには、 ALBRequestCountPerTarget メトリックに指定するには、 ResourceLabel メトリックに関連付けられたターゲット グループを識別するパラメータ。

モニタリング Amazon EC2 メトリックメトリック

メトリクス値の変化に迅速に対応できるように、1 分間隔でメトリクスをスケーリングすることをお勧めします。5 分間隔でメトリクスをスケーリングすると、応答時間が低速になり、古いメトリクスデータに基づいてスケーリングすることになる可能性があります。

のこのレベルのデータを取得するには Amazon EC2 詳細なモニタリングを有効にする必要があります。デフォルトでは、Amazon EC2 インスタンスで基本モニタリングが有効になります。つまり、インスタンスのメトリクスデータは 5 分間隔で利用できます。詳細については、「」を参照してください。モニタリングの構成 Auto Scaling インスタンス.

インスタンスのウォームアップ

ターゲット追跡スケーリングポリシーを作成するときに、新しく起動されたインスタンスのウォームアップにかかる秒数を指定できます。その指定されたウォームアップ期間が終了するまで、インスタンスは Auto Scaling グループの集合メトリクスの対象になりません。

スケールアウト時、グループの現在の容量の一部としてウォームアップ中のインスタンスは対象にしません。これにより、必要以上の数のインスタンスが追加されることがなくなります。

スケールイン時、グループの現在の容量の一部として終了中のインスタンスを対象にします。したがって、Auto Scaling グループから必要以上の数のインスタンスが削除されることがなくなります。

スケールアウトアクティビティの進行中、スケールインアクティビティを開始することはできません。

ターゲットトラッキングスケーリングポリシーの作成 (コンソール)

ターゲット追跡スケーリングポリシーを作成するには

  1. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの 自動スケーリング、選択 Auto Scaling グループ.

  3. _の横にあるチェックボックスを選択します Auto Scaling グループ。

    分割ペインが、 自動スケーリンググループ ページには、選択したグループに関する情報が表示されます。

  4. 最小および最大サイズの制限が適切に設定されていることを確認します。たとえば、グループがすでに最大サイズになっている場合は、スケールアウトするために新しい最大値を指定します。Amazon EC2 Auto Scaling は、最小容量より下回ったり、最大容量より上回ったりすることはありません。グループを更新するには、 詳細 タブで、最小容量と最大容量の現在の設定を変更します。

  5. 自動スケーリング タブ、内 ポリシーの拡張、選択 ポリシーの追加. (旧コンソール: ポリシーの拡張 タブでポリシーを追加できます。)

  6. ポリシーを定義するには、以下の作業を行います。

    1. 対象: ポリシーの種類、デフォルトは のままにします。 ターゲットトラッキングスケーリング.

    2. ポリシーの名前を指定します。

    3. 対象: メトリックタイプ、メトリックを選択します。選択できるメトリクスタイプは 1 つだけです。複数のメトリクスを使用するには、複数のポリシーを作成します。

    4. 対象: 対象群で指定したターゲット グループを選択します。 Auto Scaling グループのロードバランサー設定。このステップを完了する必要があるのは、 のターゲットあたりのリクエスト数に基づくメトリクスタイプを選択した場合のみです。Application Load Balancer.

    5. 指定 目標値 メトリックの。

    6. (オプション)インスタンスのウォームアップ値を指定します。 インスタンスが必要. これにより、新しく起動されたインスタンスが CloudWatch メトリクスに反映されるまでの時間を制御できます。

    7. (オプション) 選択 スケールアウト・ポリシーのみを作成するためにスケール・インを無効にする. これにより、必要に応じて異なるタイプの別のスケールインポリシーを作成できます。

  7. 選択 作成.

ターゲットトラッキングスケーリングポリシーを作成します(AWS CLI)

_を使用 AWS CLI 次の手順に従って、ターゲット追跡スケーリングポリシーを Auto Scaling グループ。

ステップ 1. 作成 Auto Scaling グループ

_を使用 create-auto-scaling-group コマンドを使って、 Auto Scaling グループ名 my-asg 起動構成の使用 my-launch-config。 使用したい起動構成がない場合は、 create-launch-configuration.

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --max-size 5 --min-size 1

ステップ 2. ターゲットトラッキングスケーリングポリシーの作成

作成後、 Auto Scaling グループで使用する場合は、 Amazon EC2 Auto Scaling アプリケーションへの負荷が変化したときに、グループ内の実行中のEC2インスタンスの数を動的に増減します。

例: ターゲットの追跡設定ファイル

平均 CPU 使用率を 40 パーセントに維持するターゲット追跡設定の例を次に示します。この設定を という名前のファイルに保存してください。config.json.

{ "TargetValue": 40.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }

詳細については、以下を参照してください。 定義済みメトリック仕様Amazon EC2 Auto Scaling API リファレンス.

あるいは、カスタマイズされたメトリクス仕様を作成し、各パラメータの値を から追加して、スケーリングに使用されるメトリクスをカスタマイズできます。CloudWatch. 指定されたメトリクスの平均使用率を 40 パーセントに維持するターゲット追跡設定の例を次に示します。

{ "TargetValue":40.0, "CustomizedMetricSpecification":{ "MetricName":"MyUtilizationMetric", "Namespace":"MyNamespace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ], "Statistic":"Average", "Unit":"Percent" } }

詳細については、以下を参照してください。 カスタマイズされたメトリック仕様Amazon EC2 Auto Scaling API リファレンス.

例: cpu40-target-tracking-scaling-policy

_を使用 put-scaling-policy コマンド、および config.json 前に作成したファイルを使用して、 cpu40-target-tracking-scaling-policy 平均的なCPU使用率を維持する Auto Scaling 40%です

aws autoscaling put-scaling-policy --policy-name cpu40-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

成功した場合、このコマンドはユーザーに代わって作成された 2 つの CloudWatch アラームの ARN と名前を返します。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/cpu40-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }