翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2 Auto Scaling の動的スケーリング
動的スケーリングは、トラフィックの変化に応じて Auto Scaling グループのキャパシティをスケールします。
Amazon EC2 Auto Scaling は、以下のタイプの動的スケーリングポリシーをサポートしています:
-
ターゲットトラッキングスケーリング — Amazon CloudWatch メトリックスと目標値に基づいて、グループの現在の容量を増減します。これはサーモスタットで家の温度を管理する方法と似ています (温度を選択すれば、後はサーモスタットがすべてを実行します)。
-
ステップスケーリング - アラーム違反の規模に応じて変動する一連のスケーリング調整値 (ステップ調整値) に基づいて、グループの現在のキャパシティを増減させます。
-
シンプルなスケーリング - 1 つのスケーリング調整値に基づいて、各スケーリングアクティビティ間のクールダウン期間により、グループの現在のキャパシティを増減させます。
ターゲット追跡スケーリングポリシーを使用し、Auto Scaling グループの容量の変化に反比例して変化するメトリックスを選択することを強くお勧めします。そのため、Auto Scaling グループのサイズを 2 倍にすると、メトリクスは 50% 減少します。これにより、メトリクスデータが比例スケーリングイベントを正確にトリガーできます。これには、平均 CPU 使用率やターゲットごとの平均リクエスト数などのメトリックスが含まれます。
ターゲットトラッキングを使用すると、Auto Scaling グループはアプリケーションの実際の負荷に正比例してスケーリングします。つまり、ターゲット追跡ポリシーは、負荷の変化に対応するキャパシティの緊急のニーズを満たすだけでなく、季節変動などにより経時的に発生する負荷の変化にも対応できます。
ターゲット追跡ポリシーにより、 CloudWatch アラームやスケーリング調整を手動で定義する必要もなくなります。Amazon EC2 Auto Scaling は、設定したターゲットに基づいてこれを自動的に処理します。
コンテンツ
- 動的スケーリングポリシーが機能する方法
- 複数の動的スケーリングポリシー
- Amazon EC2 Auto Scaling のターゲットトラッキングスケーリングポリシー
- Amazon EC2 Auto Scaling のステップおよび簡易スケーリングポリシー
- Amazon EC2 Auto Scaling のスケーリングクールダウン
- Amazon SQS に基づくスケーリング
- Auto Scaling グループのスケーリングアクティビティを検証する
- Auto Scaling グループのスケーリングポリシーを無効化する
- スケーリングポリシーを削除する
- AWS Command Line Interface (AWS CLI) のスケーリングポリシーの例
動的スケーリングポリシーが機能する方法
動的スケーリングポリシーは、Amazon EC2 Auto Scaling CloudWatch に特定のメトリックスを追跡するように指示し、 CloudWatch 関連するアラームが ALARM になったときに実行するアクションを定義します。アラームの状態の呼び出しに使用されるメトリクスは、Auto Scaling グループのすべてのインスタンスから取得されるメトリクスの集約です。(例えば、1 つのインスタンスが 60% の CPU で、もう 1 つのインスタンスが 40% の CPU である 2 つのインスタンスを持つ Auto Scaling グループがあるとします。平均して、これらは 50 パーセント CPU です。) ポリシーが有効な場合、アラームのしきい値を超えると、Amazon EC2 Auto Scaling はグループの希望するキャパシティーの増減を調整します。
動的スケーリングポリシーが呼び出されるとき、キャパシティー計算によってグループの最小サイズおよび最大サイズ範囲外の数値が生成される場合、Amazon EC2 Auto Scaling は、新しいキャパシティーが最小サイズおよび最大サイズ制限の範囲外にならないようにします。キャパシティは 2 つの方法のいずれかで測定されます。1 つは、希望するキャパシティをインスタンス数で設定したときに選択した同じ単位を使用する方法、もう 1 つはキャパシティーユニットを使用する方法 (インスタンスにウェイトが適用されている場合) です。
-
例 1: Auto Scaling グループの最大キャパシティーは 3、現在のキャパシティーは 2、および 3 つのインスタンスを追加する動的スケーリングポリシーがあります。このスケーリングポリシーを呼び出すとき、Amazon EC2 Auto Scaling は、グループが最大サイズを超えないようにするために、グループに 1 つのインスタンスのみを追加します。
-
例 2: Auto Scaling グループの最小キャパシティーは 2、現在のキャパシティーは 3、および 2 つのインスタンスを削除する動的スケーリングポリシーがあります。このポリシーを呼び出す場合、Amazon EC2 Auto Scaling はグループから 1 つのインスタンスのみを削除して、グループが最小サイズより小さくならないようにします。
希望するキャパシティーが最大サイズ制限に達すると、スケールアウトは停止します。需要が低下し、キャパシティーが減少した場合、Amazon EC2 Auto Scaling は再びスケールアウトできます。
ただし、インスタンスウェイトを使用する場合は例外です。この場合、Amazon EC2 Auto Scaling は最大サイズ制限を超えてスケールアウトできますが、最大インスタンスの重みまでスケールアウトできます。その意図は、できるだけ新しい希望するキャパシティーに近づけることですが、それでもグループのために指定されている割り当て戦略を遵守することです。割り当て戦略によって、起動するインスタンスタイプを決定します。重みは、インスタンスタイプに基づいて、各インスタンスがグループの希望するキャパシティーに影響するキャパシティーユニット数を決定します。
-
例 3: Auto Scaling グループの最大キャパシティーは 12、現在のキャパシティーは 10、および 5 つのキャパシティーユニットを追加する動的スケーリングポリシーがあります。インスタンスタイプには、1、4、6 の 3 つの重みのいずれかが割り当てられます。スケーリングポリシーを呼び出すとき、Amazon EC2 Auto Scaling は配分戦略に基づいて、重みが 6 のインスタンスタイプを起動することを選択します。このスケールアウトイベントの結果は、希望するキャパシティーが 12 で、現在のキャパシティーが 16 のグループになります。
複数の動的スケーリングポリシー
ほとんどの場合、ターゲット追跡スケーリングポリシーは、自動的にスケールアウトとスケールインするように Auto Scaling グループからインスタンスをデタッチするには、以下の手順を使用します。 グループを設定するのに十分です。ターゲット追跡スケーリングポリシーでは、希望する結果を選択したら、その結果を達成するために、必要に応じて Auto Scaling グループに対してインスタンスを追加および削除できます。
高度なスケーリング設定では、Auto Scaling グループに複数のスケーリングポリシーを設定できます。例えば、1 つ以上のターゲット追跡スケーリングポリシー、1 つ以上のステップスケーリングポリシー、またはその両方を定義できます。これにより、複数のシナリオに対応できる柔軟性が高まります。
複数の動的スケーリングポリシーがどのように連携するかを説明するために、Auto Scaling グループと Amazon SQS キューを使用して 1 つの EC2 インスタンスにリクエストを送信するアプリケーションを考えてみます。アプリケーションのパフォーマンスを最適なレベルに維持するために、Auto Scaling グループをスケールアウトするタイミングをコントロールする 2 つのポリシーがあるとします。1 つは、キュー内の SQS メッセージの数に基づいてキャパシティーを追加および削除するカスタムメトリクスを使用する、ターゲット追跡ポリシーです。もう 1 つは、指定した期間にわたってインスタンスの使用率が 90% を超えたときに Amazon CloudWatch CPUUtilization
メトリックスを使用して容量を追加するステップスケーリングポリシーです。
同時に有効なポリシーが複数ある場合は、各ポリシーで、Auto Scaling グループが同時にスケールアウト (またはスケールイン) するように指定している可能性があります。たとえば、CPUUtilization
CloudWatch メトリックスが急上昇してアラームのしきい値を超えると同時に、SQS カスタムメトリックスが急上昇してカスタムメトリックスアラームのしきい値を超える可能性があります。
このような状況になると、Amazon EC2 Auto Scaling はスケールアウトとスケールインの両方に最大のキャパシティーを提供するポリシーを選択します。例えば、CPUUtilization
のポリシーが 1 つのインスタンスを起動する一方で、SQS キューのポリシーは 2 つのインスタンスを起動するとします。両方のポリシーのスケールアウト基準が同時に満たされた場合、Amazon EC2 Auto Scaling は SQS キューポリシーを優先します。これにより、Auto Scaling グループは 2 つのインスタンスを起動することになります。
ポリシーがスケールインに異なる基準を使用する場合でも、最大キャパシティーを提供するポリシーを優先するというアプローチが適用されます。例えば、3 つのインスタンスを終了するポリシーと、インスタンス数を 25% 減らすポリシーがあり、スケールイン時にグループに 8 つのインスタンスがあるとします。この場合、Amazon EC2 Auto Scaling は、グループに最大数のインスタンスを提供するポリシーを優先させます。その結果、Auto Scaling グループは 2 つのインスタンスを終了します (8 の 25% = 2)。その目的は、Amazon EC2 Auto Scaling がインスタンスを削除しすぎないようにすることです。
ただし、ターゲット追跡スケーリングポリシーをステップスケーリングポリシーとともに使用する場合、ポリシー間の競合によって望ましくない動作が生じる可能性があるため、注意することをお勧めします。例えば、ターゲット追跡ポリシーがスケールインする準備が整う前に、ステップスケーリングポリシーがスケールインアクティビティを開始した場合、スケールインアクティビティはブロックされません。スケールインアクティビティが完了した後で、ターゲット追跡ポリシーにより、グループに再びスケールアウトするよう指示できます。