Amazon EC2 Auto Scaling の動的スケーリング - Amazon EC2 Auto Scaling (日本語)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 Auto Scaling の動的スケーリング

動的スケーリングを設定するときは、需要の変化に応じて Auto Scaling グループの容量をスケールする方法を定義します。

たとえば、現在 2 つのインスタンスで実行されているウェブアプリケーションがあり、アプリケーションの負荷が変化しても Auto Scaling グループの CPU 使用率を約 50% に維持する必要があるとします。これにより、過剰な数のアイドルリソースを維持することなくトラフィックのスパイクを処理するための追加の容量が得られます。

ターゲットトラッキング、ステップ、または単純なスケーリングポリシーを作成して、このニーズを満たすように動的にスケーリングするように Auto Scaling グループを設定できます。Amazon EC2 Auto Scaling は、ピーク時に高い需要に対応するためにグループをスケールアウト (インスタンスを追加) し、グループをスケールイン (実行するインスタンスの数を減らす) して、使用率が低い期間にコストを削減できます。

動的スケーリングポリシーの仕組み

動的スケーリングポリシーは、特定の CloudWatch メトリクスを追跡するように Amazon EC2 Auto Scaling に指示し、関連付けられた CloudWatch アラームが ALARM にある場合に実行するアクションを定義します。アラームのトリガーに使用されるメトリクスは、Auto Scaling グループのすべてのインスタンスから取得されるメトリクスの集合です。(たとえば、1 つのインスタンスが 60% の CPU で、もう 1 つのインスタンスが 40% の CPU である 2 つのインスタンスを持つ Auto Scaling グループがあるとします。 平均して、CPU は 50% です)。ポリシーが有効な場合、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 のグループになります。

動的なスケーリングポリシータイプ

Amazon EC2 Auto Scaling は、以下のタイプの動的スケーリングポリシーをサポートします。

  • ターゲット追跡スケーリング-特定のメトリクスのターゲット値に基づいて、グループの現在の容量を増減させます。これは、サーモスタットで家の温度を管理する方法と似ています。温度を選択すれば、後はサーモスタットがすべてを実行します。

  • ステップスケーリング-一連のスケーリング調整値 (以下の) に基づいて、グループの現在の容量を増減させます。ステップ調整値アラーム超過のサイズに応じて異なります。

  • 簡易スケーリング-1 つのスケーリング調整値に基づいて、グループの現在の容量を増減させます。

Auto Scaling グループのインスタンス数に比例して増減するメトリクスに基づいてスケールする場合は、ターゲット追跡スケーリングポリシーを使用することをお勧めします。それ以外の場合は、ステップスケーリングポリシーを使用することをお勧めします。

複数の動的スケーリングポリシー

ほとんどの場合、ターゲット追跡スケーリングポリシーは、自動的にスケールアウトとスケールインするように Auto Scaling グループを設定するのに十分です。ターゲット追跡スケーリングポリシーでは、希望する結果を選択したら、その結果を達成するために Auto Scaling グループが必要に応じてインスタンスを追加および削除できます。

高度なスケーリング設定では、Auto Scaling グループに複数のスケーリングポリシーを設定できます。たとえば、1 つ以上のターゲット追跡スケーリングポリシー、1 つ以上のステップスケーリングポリシー、またはその両方を定義できます。これにより、複数のシナリオに対応できる柔軟性が高まります。

複数の動的スケーリングポリシーがどのように連携するかを説明するために、Auto Scaling グループと Amazon SQS キューを使用して 1 つの EC2 インスタンスにリクエストを送信するアプリケーションを考えてみます。アプリケーションのパフォーマンスを最適なレベルに維持するために、Auto Scaling グループをスケールアウトするタイミングを制御する 2 つのポリシーがあります。1 つは、キュー内の SQS メッセージの数に基づいて容量を追加および削除するカスタムメトリクスを使用する、ターゲット追跡ポリシーです。もう 1 つは、Amazon CloudWatch を使用するステップスケーリングポリシーです。CPUUtilizationメトリクスを使用して、インスタンスが指定された時間内に 90% の使用率を超えたときに容量を追加します。

同時に有効なポリシーが複数ある場合は、各ポリシーで Auto Scaling グループに同時にスケールアウト (またはスケールイン) するように 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 がインスタンスを削除しすぎないようにすることです。

ただし、ターゲット追跡スケーリングポリシーをステップスケーリングポリシーとともに使用する場合、ポリシー間の競合によって望ましくない動作が生じる可能性があるため、注意することをお勧めします。たとえば、ターゲット追跡ポリシーがスケールインする準備が整う前に、ステップスケーリングポリシーがスケールインアクティビティを開始した場合、スケールインアクティビティはブロックされません。スケールインアクティビティが完了した後で、ターゲット追跡ポリシーにより、グループに再びスケールアウトするよう指示できます。