Amazon EC2 Auto Scaling のステップおよびシンプルなスケーリングポリシー - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling のステップおよびシンプルなスケーリングポリシー

ステップスケーリングポリシーと簡易スケーリングポリシーは、 CloudWatch アラームに基づいて Auto Scaling グループの容量を事前に定義された増分でスケーリングします。アラームのしきい値を超えると、スケールアウト (容量の増加) とスケールイン (キャパシティの減少) を処理するスケーリングポリシーを個別に定義できます。

ステップスケーリングと簡易スケーリングでは、スケーリングプロセスを呼び出す CloudWatch アラームを作成および管理します。アラームに違反すると、Amazon EC2 Auto Scaling はそのアラームに関連付けられたスケーリングポリシーを開始します。

ターゲット追跡スケーリングポリシーを使用して、ターゲットあたりの平均CPU使用率や平均リクエスト数などのメトリクスをスケールすることを強くお勧めします。キャパシティーが増加すると減少し、キャパシティーが減少すると増加するメトリクスを使用すると、ターゲット追跡を使用してインスタンス数を比例的にスケールアウトしたり、インスタンス数を増やすことができます。これにより、Amazon EC2 Auto Scaling がアプリケーションの需要曲線に厳密に従うようになります。詳細については、「ターゲット追跡スケーリングポリシー」を参照してください。

ステップスケーリングポリシーのしくみ

ステップスケーリングを使用するには、まず Auto Scaling グループのメトリクスをモニタリングする CloudWatch アラームを作成します。アラーム違反を判断するメトリクス、しきい値、評価期間の数を定義します。次に、アラームのしきい値を超えたときにグループをスケーリングする方法を定義するステップスケーリングポリシーを作成します。

ポリシーにステップ調整値を追加します。アラームの違反規模に基づいて、さまざまなステップ調整値を定義できます。例:

  • アラームメトリクスが 60% に達した場合、10 インスタンスずつスケールアウトする

  • アラームメトリクスが 75% に達した場合、30 インスタンスずつスケールアウトする

  • アラームメトリクスが 85% に達した場合、40 インスタンスずつスケールアウトする

指定された評価期間数のアラームしきい値を超えると、Amazon EC2 Auto Scaling はポリシーで定義されたステップ調整を適用します。アラームの状態が OK に戻るまで、さらなるアラーム違反が発生した場合に備えて、調整を続けることができます。

各インスタンスにはウォームアップ期間があり、短期間に発生した変更に対してスケーリングアクティビティが過度に反応しすぎないようにします。オプションで、スケーリングポリシーのウォームアップ期間を設定できます。ただし、ウォームアップ時間が変化したときにすべてのスケーリングポリシーを簡単に更新できるように、デフォルトのインスタンスウォームアップを使用することをお勧めします。詳細については、「Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する」を参照してください。

シンプルなスケーリングポリシーは、ステップスケーリングポリシーに似ていますが、1 つのスケーリング調整に基づいており、各スケーリングアクティビティ間にクールダウン期間がある点が異なります。詳細については、「簡易スケーリングポリシー」を参照してください。

ステップスケーリングのステップ調整

ステップスケーリングポリシーを作成するときは、アラーム超過のサイズに基づいてインスタンス数を動的にスケーリングする 1 つ以上のステップ調整値を指定します。各ステップ調整値は、次のように指定します。

  • メトリクス値の下限

  • メトリクス値の上限

  • スケーリング調整タイプに基づいてスケールする量

CloudWatch は、 CloudWatch アラームに関連付けられているメトリクスの統計に基づいてメトリクスデータポイントを集計します。アラームに違反すると、適切なスケーリングポリシーが呼び出されます。Amazon EC2 Auto Scaling は、 CloudWatch (未加工のメトリクスデータではなく) からの最新のメトリクスデータポイントに集約タイプを適用します。ステップ調整によって定義された上限と下限に対して、この集約メトリクス値を比較することにより、実行するステップ調整が決定されます。

違反しきい値に比例して上限と下限を指定します。例えば、メトリクスが 50% を超えた場合に CloudWatch アラームとスケールアウトポリシーを作成したとします。次に、メトリクスが 50% を下回ったときの 2 つ目のアラームとスケールインポリシーを作成しました。各ポリシーの調整タイプ PercentChangeInCapacity (またはコンソールのグループの割合) を使用して、一連のステップ調整を行いました。

例: スケールアウトポリシーのステップ調整値
下限 上限 調整

0

10

0

10

20

10

20

null

30

例: スケールインポリシーのステップ調整値
下限 上限 調整

-10

0

0

-20

-10

-10

null

-20

-30

これにより、次のスケーリング設定が作成されます。

Metric value -infinity 30% 40% 60% 70% infinity ----------------------------------------------------------------------- -30% | -10% | Unchanged | +10% | +30% -----------------------------------------------------------------------

次に、現在の容量と希望する容量の両方が 10 の Auto Scaling グループで、このスケーリング設定を使用するとします。以下の点は、グループの希望キャパシティーと現在のキャパシティーに関連してスケーリング設定の動作をまとめたものです。

  • 集合メトリクス値が 40 より大きく 60 未満である間は、現在のキャパシティーと必要なキャパシティーが維持されます。

  • メトリクス値が 60 になった場合、スケールアウトのポリシーの 2 番目のステップ調整値 (10 インスタンスの 10% を追加) に基づいて、グループの必要なキャパシティーを 1 インスタンスだけ増やして、11 インスタンスにします。新しいインスタンスが実行され、指定されたウォームアップ時間が終了すると、グループの現在の容量は 11 インスタンスに増加します。このキャパシティーの増加後も、メトリクス値が 70 に上昇すると、グループの希望するキャパシティーはさらに 3 インスタンス増加し、14 インスタンスになります。これは、スケールアウトポリシーの 3 番目のステップ調整に基づきます (11 インスタンスの 30% である 3.3 インスタンスを 3 インスタンスに切り捨て、追加します)。

  • メトリクス値が 40 になった場合、スケールインポリシーの 2 番目のステップ調整値 (14 インスタンスの 10%、つまり 1.4 インスタンスを丸めた 1 インスタンスを削除) に基づいて、グループの必要なキャパシティーを 1 インスタンスだけ減らして、13 インスタンスにします。このキャパシティーが減少した後も、メトリクス値が 30 に下がると、グループの希望するキャパシティーはさらに 3 インスタンス減少し、10 インスタンスになります。これは、スケールインポリシーの 3 番目のステップ調整に基づきます (13 インスタンスの 30% である 3.9 インスタンスを 3 インスタンスに切り捨て、減算します)。

スケーリングポリシーのステップ調整を指定するときは、次の点に注意してください。

  • を使用する場合は AWS Management Console、上限と下限を絶対値として指定します。 AWS CLI または を使用する場合はSDK、違反しきい値に対する上限と下限を指定します。

  • ステップ調整値の範囲に重複や間隔があってはなりません。

  • 1 つのステップ調整値のみ、下限を null (負の無限大) にすることができます。下限が負のステップ調整値がある場合は、下限が null のステップ調整値が必要です。

  • 1 つのステップ調整値のみ、上限を null (正の無限大) にすることができます。上限が正のステップ調整値がある場合は、上限が null のステップ調整値が必要です。

  • 同じステップ調整値で上限と下限を null にすることはできません。

  • メトリクス値が超過しきい値を上回っている場合、下限にその値を含み、上限には含みません。メトリクス値が超過しきい値を下回っている場合、下限にその値を含まず、上限に含みます。

スケーリング調整タイプ

選択したスケーリング調整タイプに基づいて、最適なスケーリングアクションを実行するスケーリングポリシーを定義できます。調整タイプは、Auto Scaling グループの現在のキャパシティーに対する割合、またはキャパシティーユニットで指定できます。通常、キャパシティユニットとは、インスタンスの重み付け機能を使用していない限り、1 つのインスタンスを意味します。

Amazon EC2 Auto Scaling は、ステップスケーリングと簡易スケーリングに対して次の調整タイプをサポートしています。

  • ChangeInCapacity - 指定した値だけ現在のキャパシティーを増減させます。正の調整値は現在のキャパシティーを増やし、負の調整値は現在のキャパシティーを減らします。例えば、グループの現在のキャパシティーが 3 で、調整値が 5 の場合、このポリシーが実行されると、キャパシティーユニットが 5 個キャパシティーに追加され、合計 8 個のキャパシティーユニットになります。

  • ExactCapacity - グループの現在のキャパシティーを指定された値に変更します。この調整タイプには負ではない値を指定します。例えば、グループの現在のキャパシティーが 3 で、調整値が 5 の場合、このポリシーが実行されると、キャパシティーは 5 キャパシティーユニットに変更されます。

  • PercentChangeInCapacity - 指定したパーセンテージだけ現在のキャパシティーを増減させます。正の値はキャパシティーを増やし、負の値はキャパシティーを減らします。例えば、現在のキャパシティーが 10 で、調整値が 10% の場合、このポリシーが実行されると、キャパシティーユニットが 1 個追加され、合計 11 個のキャパシティーユニットになります。

    注記

    結果の値が整数でない場合、その値を以下のように四捨五入します。

    • 1 より大きい値は小数点以下が切り捨てられます。例えば、12.712 に丸められます。

    • 0 と 1 の間の値は 1 に丸められます。例えば、.671 に丸められます。

    • 0 と -1 の間の値は -1 に丸められます。例えば、-.58-1 に丸められます。

    • -1 未満の値は小数点以下が切り捨てられます。例えば、-6.67-6 に丸められます。

PercentChangeInCapacity では、MinAdjustmentMagnitude パラメータを使用して、スケールするインスタンスの最小数を指定することもできます。例えば、25 パーセント追加するポリシーを作成し、インスタンスの最小増減値を 2 に指定するとします。4 つのインスタンスを持つ Auto Scaling グループがあり、スケーリングポリシーを実行する場合、25 パーセントは 1 インスタンスです。ただし、最小増減値が 2 に指定されているため、2 つのインスタンスが追加されます。

インスタンスの重み を使用すると、 MinAdjustmentMagnitudeパラメータをゼロ以外の値に設定する効果が変化します。値はキャパシティーユニットで指定します。スケールするインスタンスの最小数を設定するには、このパラメータを、最大インスタンスの重みと同じ以上の値に設定します。

インスタンスの重みを使用する場合は、Auto Scaling グループの現在の容量が必要に応じて希望する容量を超える可能性があることに注意してください。デクリメントする絶対数、またはデクリメントする割合が現在のキャパシティーと希望するキャパシティーの差よりも小さい場合、スケーリングアクションは実行されません。しきい値アラームに違反している場合にスケーリングポリシーの結果を確認する際は、このような動作を考慮に入れる必要があります。例えば、希望するキャパシティーが 30 で、現在のキャパシティーが 32 であるとします。アラームに違反している場合、スケーリングポリシーで希望するキャパシティーを 1 ずつ減らすと、スケーリングアクションは実行されません。

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

ステップスケーリングの場合、オプションで、新しく起動されたインスタンスのウォームアップ時間を秒単位で指定できます。指定されたウォームアップ時間が終了するまで、インスタンスは Auto Scaling グループの集約されたEC2インスタンスメトリクスにカウントされません。

インスタンスがウォームアップ期間中、スケーリングポリシーは、ウォームアップしていないインスタンスのメトリクス値がポリシーのアラーム上限しきい値より大きい場合にのみスケールアウトします。

グループが再度スケールアウトする場合、まだウォームアップ中のインスタンスは、次のスケールアウトアクティビティの希望キャパシティーの一部として計上されます。したがって、複数のアラーム超過によってもステップ調整値の範囲は変わらず、1 つのスケーリングアクティビティという結果になります。その目的は、スケールアウトを継続的に (ただし過剰になることなく) 行うことです。

例えば、2 つのステップからなるポリシーを作成するとします。最初のステップでは、メトリクスが 60 になったら 10% を追加し、2 番目のステップではメトリクスが 70 になったら 30% を追加します。Auto Scaling グループの目的キャパシティーは 10 で、現在のキャパシティは 10 です。集約されたメトリクス値が 60 未満の間は、目的キャパシティーと現在のキャパシティーは変わりません。メトリクスが 60 になり、1 つのインスタンス (10 インスタンスの 10 パーセント) が追加されたとします。その後、新しいインスタンスがまだウォームアップしている間に、メトリクスは 62 になります。スケーリングポリシーは、現在のキャパシティー (まだ 10) に基づいて新しく必要なキャパシティーを計算します。ただし、グループの必要キャパシティーはすでに 11 インスタンスに増えているため、スケーリングポリシーはこれ以上必要キャパシティーは増やしません。新しいインスタンスがまだウォームアップ中にメトリックスが 70 になった場合は、3 インスタンス (10 インスタンスの 30%) を追加する必要があります。ただし、グループの必要なキャパシティーはすでに 11 であるため、2 つのインスタンスのみを追加し、新しい必要なキャパシティーは 13 インスタンスになります。

スケールアウトアクティビティの進行中は、インスタンスがウォームアップを終了するまで、スケーリングポリシーによって開始されたすべてのスケールインアクティビティがブロックされます。インスタンスのウォームアップが完了し、スケールインイベントが発生した場合、現在終了中のインスタンスは、新しい必要キャパシティーを計算する際にグループの現在のキャパシティーにカウントされます。したがって、Auto Scaling グループから必要以上の数のインスタンスが削除されることがなくなります。例えば、インスタンスがすでに終了しているときに、必要なキャパシティーを 1 つデクリメントした同じステップ調整の範囲内でアラームに違反した場合、スケーリングアクションは実行されません。

デフォルト値

値が設定されていない場合、スケーリングポリシーはデフォルト値を使用します。これは、グループに定義されたデフォルトのインスタンスウォームアップの値です。デフォルトのインスタンスウォームアップが null の場合、デフォルトのクールダウン の値にフォールバックします。

考慮事項

ステップおよびシンプルなスケーリングポリシーを使用する場合は、次の考慮事項が適用されます。

  • ステップスケーリングを使用できるほど正確にアプリケーションのステップ調整を予測できるかどうかを検討してください。スケーリングメトリクスがスケーラブルターゲットの容量に比例して増減する場合は、代わりにターゲット追跡スケーリングポリシーを使用することをお勧めします。より高度な設定には、追加ポリシーとしてステップスケーリングを使用するオプションがあります。例えば、必要に応じて、使用率が一定のレベルに達したときにより積極的なレスポンスを設定できます。

  • フラッピングを防ぐために、スケールアウトとスケールインのしきい値の間には適切なマージンを選択してください。フラッピングは、スケールインとスケールアウトの無限ループです。つまり、スケーリングアクションが実行されると、メトリクス値が変化して、逆方向に別のスケーリングアクションが開始されます。