Amazon EC2 Auto Scaling (日本語)
ユーザーガイド

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

動的スケーリングを設定する場合は、需要の増減に応じてスケールする方法を定義する必要があります。たとえば、現在 2 つのインスタンスで実行されているウェブアプリケーションがあり、アプリケーションの負荷が変化しても Auto Scaling グループの CPU 使用率を約 50% に維持する必要があるとします。これにより、過剰な量のアイドルリソースを維持することなくトラフィックの急上昇を処理するための追加の容量が得られます。このニーズを満たすため、自動的にスケーリングするように Auto Scaling グループを設定できます。ポリシータイプによって、スケーリングアクションがどのように実行されるかが決まります。

スケーリングポリシータイプ

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

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

  • Step scaling — アラーム超過のサイズに応じて変動する一連のスケーリング調整値 (ステップ調整値と呼ばれる) に基づいて、グループの現在の容量を増減させます。

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

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

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

ほとんどの場合、ターゲット追跡スケーリングポリシーは、自動的にスケールアウトまたはスケールインするように 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 グループが同時にスケールアウト (またはスケールイン) するように指定している可能性があります。たとえば、EC2 インスタンスによって CPUUtilization メトリクスの CloudWatch アラームがトリガーされると同時に、SQS キューによってカスタムメトリクスに対するアラームがトリガーされる可能性があります。

このような状況になると、Amazon EC2 Auto Scaling はスケールアウトとスケールインの両方に最大の容量を提供するポリシーを選択します。たとえば、CPU 使用率のポリシーが 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 がインスタンスを削除しすぎないようにすることです。