Application Auto Scaling のステップスケーリングの仕組み
このトピックでは、ステップスケーリングの仕組みについて説明し、ステップスケーリングポリシーの主要な要素を紹介します。
仕組み
ステップスケーリングを使用するには、スケーラブルなターゲット用に CloudWatch アラームを作成します。アラーム違反を判断するメトリクス、しきい値、評価期間の数を定義します。また、アラームのしきい値を超えた場合の容量のスケーリング方法を定義するステップスケーリングポリシーを作成し、それをスケーラブルな目標と関連付けることもできます。
ポリシーにステップ調整値を追加します。アラームの違反規模に基づいて、さまざまなステップ調整値を定義できます。例:
-
アラームメトリクスが 60% に達したら、10 キャパシティーユニットずつスケールアウトする
-
アラームメトリクスが 75% に達したら、30 キャパシティーユニットずつスケールアウトする
-
アラームメトリクスが 85% に達したら、40 キャパシティーユニットずつスケールアウトする
指定した評価期間にアラームのしきい値を超えると、Application Auto Scaling はポリシーで定義されたステップ調整を適用します。アラームの状態が OK
に戻るまで、さらなるアラーム違反が発生した場合に備えて、調整を続けることができます。
スケーリングアクティビティは、容量の急激な変動を防ぐため、クールダウン期間を設けて実行されます。オプションでスケーリングポリシーのクールダウン期間を設定できます。
ステップ調整値
ステップスケーリングポリシーを作成するときは、アラーム超過のサイズに基づいてターゲット容量を動的にスケーリングする 1 つ以上のステップ調整値を指定します。各ステップ調整値は、次のように指定します。
-
メトリクス値の下限
-
メトリクス値の上限
-
スケーリング調整タイプに基づいてスケールする量
CloudWatch は、CloudWatch アラームに関連付けられたメトリクスの統計に基づいて、メトリクスデータポイントを集計します。アラームに違反すると、適切なスケーリングポリシーが呼び出されます。Application Auto Scaling は、raw メトリクスデータではなく、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 のスケーラブルなターゲットでこのスケーリング設定を使用するとします。以下の点は、スケーラブルターゲットの容量に関連してスケーリング設定の動作をまとめたものです。
-
集合メトリクス値が 40 より大きく 60 未満である間は、元の容量が維持されます。
-
メトリクス値が 60 に到達すると、Application Auto Scaling はスケーラブルターゲットの容量に 1 を足して 11 にします。これはスケールアウトポリシーの 2 番目のステップ調整値に基づきます (10 の 10% を追加)。新しい容量が追加されると、Application Auto Scaling は現行の容量を 11 に増やします。この容量の増加後にメトリクス値が 70 に上昇すると、Application Auto Scaling はターゲット容量に 3 を足して 14 にします。これはスケールアウトポリシーの 3 番目のステップ調整値に基づきます (11 の 30% である 3.3 を、3 に切り捨てて追加)。
-
メトリクス値が 40 になると、Application Auto Scaling はスケールインポリシーの 2 番目のステップ調整値 (14 の 10%、つまり 1.4 を四捨五入した 1 を削除) に基づき、スケーラブルターゲットの容量から 1 を引いて 13 にします。この容量の減少後にメトリクス値がさらに 30 まで減った場合、Application Auto Scaling はスケールインポリシーの 3 番目のステップ調整 (13 の 30%、つまり 3.9 を四捨五入した 3 を削除) に基づき、ターゲット容量から 3 を引いて 10 にします。
スケーリングポリシーのステップ調整を指定するときは、次の点に注意してください。
-
ステップ調整値の範囲に重複や間隔があってはなりません。
-
1 つのステップ調整値のみ、下限を null (負の無限大) にすることができます。下限が負のステップ調整値がある場合は、下限が null のステップ調整値が必要です。
-
1 つのステップ調整値のみ、上限を null (正の無限大) にすることができます。上限が正のステップ調整値がある場合は、上限が null のステップ調整値が必要です。
-
同じステップ調整値で上限と下限を null にすることはできません。
-
メトリクス値が超過しきい値を上回っている場合、下限にその値を含み、上限には含みません。メトリクス値が超過しきい値を下回っている場合、下限にその値を含まず、上限に含みます。
スケーリング調整タイプ
選択したスケーリング調整タイプに基づいて、最適なスケーリングアクションを実行するスケーリングポリシーを定義できます。調整タイプは、スケーラブルターゲットの現在の容量に対する割合、または絶対数で指定できます。
Application Auto Scaling は、ステップスケーリングポリシーに対して以下の調整タイプをサポートします。
-
ChangeInCapacity – スケーラブルターゲットの現行容量を、指定された値に基づいて増減させます。正の値はキャパシティーを増やし、負の値はキャパシティーを減らします。例えば、現行容量が 3 で調整値が 5 の場合、Application Auto Scaling は容量に 5 を追加して合計を 8 にします。
-
ExactCapacity – スケーラブルターゲットの現行容量を、指定された値に変更します。この調整タイプには負の値以外を指定します。例えば、現行容量が 3 で調整値が 5 の場合、Application Auto Scaling は容量を 5 に変更します。
-
PercentChangeInCapacity – スケーラブルターゲットの現行容量を、指定された割合 (%) に基づいて増減させます。正の値はキャパシティーを増やし、負の値はキャパシティーを減らします。例えば、現行容量が 10 で調整値が 10 パーセントの場合、Application Auto Scaling は容量に 1 を追加して合計を 11 にします。
調整後の値が整数ではない場合、Application Auto Scaling はその値を以下のように四捨五入します。
-
1 より大きい値は小数点以下が切り捨てられます。例えば、
12.7
は12
に丸められます。 -
0 と 1 の間の値は 1 に丸められます。例えば、
.67
は1
に丸められます。 -
0 と -1 の間の値は -1 に丸められます。例えば、
-.58
は-1
に丸められます。 -
-1 未満の値は小数点以下が切り捨てられます。例えば、
-6.67
は-6
に丸められます。
PercentChangeInCapacity では、
MinAdjustmentMagnitude
パラメータを使用してスケーリングする最小の数量を指定できます。例えば、25% 追加するポリシーを作成して、最小数量を 2 に指定するとします。スケーラブルなターゲットの容量が 4 の時にスケーリングポリシーを実行すると、4 の 25% は 1 です。しかし、最小増分が 2 に指定されていることから、Application Auto Scaling は 2 を追加します。 -
クールダウン期間
必要に応じて、ステップスケーリングポリシーでクールダウン期間を定義できます。
クールダウン期間は、前回のスケーリングアクティビティが有効になるまでスケーリングポリシーが待機する時間を指定します。
ステップスケーリング設定のクールダウン期間の使用を計画する方法は次の 2 つです。
-
スケールアウトポリシーのクールダウン期間では、スケールアウトが継続的に (ただし過剰になることなく) 行われます。スケーリングポリシーを使用して Application Auto Scaling が正常にスケールアウトすると、クールダウン時間の計算が開始されます。スケーリングポリシーは、より大きなスケールアウトがトリガーされるか、クールダウン期間が終了しない限り、必要な容量を再度増加させません。このスケールアウトクールダウン期間が有効な間は、スケールアウトアクティビティを開始することで追加された容量は、次のスケールアウトアクティビティに予定される容量の一部として繰り入れられます。
-
スケールインポリシーのクールダウン期間では、スケールインを控え目に行ってアプリケーションの可用性を保護することを目的としているため、スケールインアクティビティはスケールインクールダウン期間が終了するまでブロックされます。ただし、スケールインクールダウン期間中に別のアラームがスケールアウトアクティビティをトリガーした場合、Application Auto Scaling scale によってターゲットが即座にスケールアウトされます。この場合、スケールインクールダウン期間は停止し、完了しません。
例えば、トラフィックピークが発生すると、アラームがトリガーされ、Application Auto Scaling は、増加したロードを処理できるように容量を自動的に追加します。スケールアウトポリシーのクールダウン期間を設定した場合、アラームがポリシーをトリガーして容量を 2 増やすと、スケーリングアクティビティは正常に完了し、スケールアウトクールダウン期間が始まります。クールダウン期間中にアラームが再度トリガーし、さらに進んだステップ調整を行う場合 (3 の増加)、以前の 2 の増加は現在の容量の一部とみなされます。したがって、容量に追加されるのは 1 だけです。これにより、必要以上に容量を追加しなくても、クールダウンの期限が切れるのを待つよりも速くスケーリングできます。
クールダウン期間は秒単位で測定され、スケーリングポリシー関連のスケーリングアクティビティにのみ適用されます。クールダウン期間中、スケジュールされたアクションがスケジュールされた時間に開始されると、クールダウン期間の期限が切れるのを待たずにスケーリングアクティビティを即座にトリガーできます。
値を指定しない場合、デフォルト値は 300 です。
スケーリングポリシーの作成、管理、および削除用によく使用されるコマンド
スケーリングポリシーの操作用によく使用されるコマンドには以下が含まれます。
-
register-scalable-target AWS リソースまたはカスタムリソースをスケーラブルターゲット (Application Auto Scaling がスケールできるリソース) として登録し、スケーリングを一時停止および再開します。
-
put-scaling-policy 既存のスケーラブルターゲットのスケーリングポリシーを追加または変更します。
-
describe-scaling-activities AWS リージョン内でのスケーリングアクティビティに関する情報を返します。
-
describe-scaling-policies AWS リージョン内のスケーリングポリシーに関する情報を返します。
-
delete-scaling-policy スケーリングポリシーを削除します。
考慮事項
ステップスケーリングポリシーを使用する場合は、次の考慮事項が適用されます。
-
ステップスケーリングを使用できるほど正確にアプリケーションのステップ調整を予測できるかどうかを検討してください。スケーリングメトリクスがスケーラブルターゲットの容量に比例して増減する場合は、代わりにターゲット追跡スケーリングポリシーを使用することをお勧めします。より高度な設定には、追加ポリシーとしてステップスケーリングを使用するオプションがあります。例えば、必要に応じて、使用率が一定のレベルに達したときにより積極的なレスポンスを設定できます。
-
フラッピングを防ぐために、スケールアウトとスケールインのしきい値の間には適切なマージンを選択してください。フラッピングは、スケールインとスケールアウトの無限ループです。つまり、スケーリングアクションが実行されると、メトリクス値が変化して、逆方向に別のスケーリングアクションが開始されます。
関連リソース
Auto Scaling グループのステップスケーリングポリシーの作成の詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「Amazon EC2 Auto Scaling のステップおよび簡易スケーリングポリシー」を参照してください。
コンソールアクセス
スケーラブルリソースに対するステップスケーリングポリシーを表示、追加、更新、削除するためのコンソールアクセスは、使用するリソースによって異なります。詳細については、「Application Auto Scaling を使用できる AWS のサービス のサービス」を参照してください。