トラフィックの急増やハードウェアの障害によってワークロードが変動する場合、手動スケーリングでは迅速に対応できません。ターゲット追跡スケーリングルールは、指定したターゲット値で CloudMonitor メトリックを維持するために、インスタンス数を自動的に調整します。
仕組み
ターゲット追跡スケーリングルールは、CloudMonitor メトリックをターゲット値にリンクさせます。Auto Scaling はメトリックを継続的に監視し、必要なインスタンス数を計算し、メトリックをターゲット値に近づけるためにインスタンスを追加または削除します。ターゲット追跡スケーリングルールは簡易スケーリングルールをベースに構築されていますが、手動でのしきい値のチューニングは不要になります。
Auto Scaling は、簡易、ステップ、予測、ターゲット追跡の 4 種類のスケーリングルールをサポートしています。詳細については、「スケーリングルールの概要」をご参照ください。
自動作成される監視タスク
ターゲット追跡スケーリングルールを作成すると、Auto Scaling は自動的に 2 つの監視タスクを作成します。
| タスク | メトリック収集間隔 | トリガー条件 |
|---|---|---|
| 段階的なスケールアウト | 60 秒ごと | しきい値が 3 分間連続して超えた場合 |
| 控えめなスケールイン | 60 秒ごと | しきい値が 15 分間連続して超えた場合 |
これらのタスクは直接変更または削除できません。削除するには、ターゲット追跡スケーリングルールを削除する必要があります。これらのタスクの表示、無効化、有効化は可能です。
インスタンス数の計算
Auto Scaling は、メトリック履歴とターゲット値に基づいて、各スケーリングアクティビティの正確なインスタンス数を計算します。
-
スケールアウト:切り上げ。1.5 個のインスタンスが必要な場合、2 個のインスタンスが追加されます。
-
スケールイン:切り捨て。1.5 個のインスタンスを削除できる場合、1 個のインスタンスのみが削除されます。
メトリックデータがしきい値に達しない場合、スケーリングアクティビティは発生しません。計算されたインスタンス数が 1 未満の場合、アラートは継続的に報告されますが、スケールインはトリガーされません。
サポートされるメトリック
ターゲット追跡に使用されるメトリックは、インスタンスのワークロードを表し、スケーリンググループ内のインスタンス数に比例してスケールする必要があります。
ECS タイプのスケーリンググループ
|
API メトリック |
コンソール メトリック |
説明 |
|
CpuUtilization |
(ECS) 平均 CPU 使用率 |
インスタンス全体の平均 CPU 使用率 |
|
IntranetRx |
(ECS) 平均インバウンド内部トラフィック |
イントラネット経由の平均インバウンドトラフィック |
|
IntranetTx |
(ECS) 平均アウトバウンド内部トラフィック |
イントラネット経由の平均アウトバウンドトラフィック |
|
ClassicInternetRx / VpcInternetRx |
(ECS) 平均インバウンドパブリックトラフィック |
インターネットからの平均インバウンドトラフィック。ネットワークタイプ がクラシックネットワークか VPC のいずれかに基づいて使用されます。このタイプはスケーリンググループの ネットワークタイプ によって決まります。 |
|
ClassicInternetTx / VpcInternetTx |
(ECS) 平均アウトバウンドパブリックトラフィック |
インターネットへの平均アウトバウンドトラフィック。ネットワークタイプ がクラシックネットワークか VPC のいずれかに基づいて使用されます。このタイプはスケーリンググループの ネットワークタイプ によって決まります。 |
|
MemoryUtilization |
(Agent) メモリ |
CloudMonitor エージェントによって収集されたメモリ使用率 |
|
LoadBalancerRealServerAverageQps |
(ALB) バックエンドサーバーあたりの QPS |
バックエンドサーバーあたりの 1 秒あたりクエリ数 (QPS)。ALB サーバーグループ の設定が必要です。 |
Elastic Container Instance タイプのスケーリンググループ
|
API メトリック |
コンソールメトリック |
説明 |
|
EciPodCpuUtilization |
CPU 使用率 |
Pod における平均 CPU 使用率 |
|
EciPodMemoryUtilization |
メモリ使用量 |
Pod における平均メモリ使用量 |
|
LoadBalancerRealServerAverageQps |
(ALB) バックエンドサーバーあたりの QPS |
バックエンドサーバーあたりの 1 秒あたりのクエリ数。このメトリックを有効にするには、ALB サーバーグループ の設定が必要です。 |
スケールインの無効化
デフォルトでは、ターゲット追跡スケーリングルールはスケールアウトとスケールインの両方の監視タスクを作成します。[スケールインの無効化] をオンにすると、ルールによるインスタンスの削除を防ぐことができます。
[スケールインの無効化] がオンの場合:
-
スケールアウトの監視タスクのみが作成されます。スケールインのタスクは作成されません。
-
簡易スケーリングルールを持つ別の監視タスクなど、他の方法でスケールインを処理します。
[スケールインの無効化] がオフの場合、スケールアウトとスケールインの両方のタスクが作成されます。
どちらかの方法で[スケールインの無効化]を設定してください:
-
コンソール: [スケーリングルールの作成] ダイアログボックスで、[スケールインの無効化] の横にあるトグルをオンにします。
-
API:CreateScalingRule 操作で、
DisableScaleInをtrueに設定します。
インスタンスのウォームアップ時間の設定
「インスタンスのウォームアップ時間」は、新しく追加されたインスタンスが本番トラフィックを処理できるようになるまでの期間です。ウォームアップ中、Auto Scaling はインスタンスからメトリックデータを収集しません。これにより、不完全なメトリックデータによって引き起こされる時期尚早なスケーリングを防ぎます。
ウォームアップ期間は、サービスのデプロイ、Server Load Balancer (SLB) のヘルスチェックの通過、安定したメトリックの報告開始に必要な時間に基づいて設定してください。
ウォームアップ中の動作
-
インスタンスはスケーリンググループに属しますが、CloudMonitor のメトリックには寄与しません。
-
ウォームアップ中のインスタンスは、スケールアウト計算のベースとしてカウントされません。
-
ウォームアップ期間中、Auto Scaling はスケーリンググループ内のスケーリングルールを実行するリクエストを拒否します。
-
ウォームアップ期間が終了すると、インスタンスは CloudMonitor へのデータ報告を開始し、スケーリンググループのキャパシティの一部としてカウントされます。
例:スケーリンググループに 2 つのインスタンスが含まれています。スケールアウトにより、300 秒のウォームアップ期間を持つ 5 つの新しいインスタンスが追加されます。ウォームアップが終了するまで、その後のスケールアウト計算のベースとして使用されるのは、元の 2 つのインスタンスのみです。
ウォームアップ中のスケールイン保護
Auto Scaling は、データ遅延によりまだウォームアップ中のインスタンスを削除することを防ぐため、スケールイン中に適切なデフォルトのクールダウン時間を設定します。
ターゲット追跡スケーリングルールの作成
ターゲット追跡スケーリングルールは、Auto Scaling コンソールまたは API の呼び出しによって作成します。
-
コンソール:スケーリンググループに移動し、スケーリングルールを作成します。詳細な手順については、「スケーリングルールの管理」をご参照ください。
-
API:CreateScalingRule 操作を呼び出します。
制限事項
-
各メトリックは、スケーリンググループごとに 1 つのターゲット追跡スケーリングルールにのみ割り当てることができます。
-
スケーリンググループのインスタンス数が少ない場合、各インスタンスが集計メトリックに与える影響が大きいため、メトリック値がターゲット値と大幅に異なることがあります。
ターゲット追跡スケーリングルールと簡易スケーリングルールの比較
|
項目 |
簡易スケーリングルール |
ターゲット追跡スケーリングルール |
|
ユーザーの関与 |
高。手動でのルール作成、しきい値の監視、スケーリングアクティビティの管理が必要です。 |
低。メトリックとターゲット値を指定するだけで、残りは Auto Scaling が処理します。 |
|
調整の精度 |
固定。ルールは静的なしきい値に基づいており、動的な適応はありません。 |
動的。Auto Scaling はメトリック履歴に基づいて正確なインスタンス数を計算します。 |
|
メトリックの信頼性 |
ウォームアップのサポートなし。新しく追加されたインスタンスが不完全なメトリックを報告し、誤ったアラートを引き起こす可能性があります。 |
ウォームアップのサポートあり。新しいインスタンスからのメトリックは、ウォームアップが完了するまで除外されます。 |
|
スケーリングの安定性 |
オシレーション (振動) が発生しやすい。個別のスケールアウトとスケールインのルールが競合する可能性があります。 |
安定。Auto Scaling はメトリック履歴に基づいてターゲット範囲を計算し、不要なスケーリングアクティビティを削減します。 |
|
データ遅延の処理 |
メトリックの変更がインスタンス数の変更に遅延します。スケーリング後もアラートが継続し、不要なアクティビティがトリガーされる可能性があります。 |
Auto Scaling は、控えめなスケールインと段階的なスケールアウトのポリシーを使用することで、データ遅延を考慮します。 |