ターゲット追跡スケーリングルールは、Auto Scaling と CloudMonitor を統合し、指定されたメトリクス目標値に基づいてインスタンスを自動的にスケールアウトまたはスケールインすることで、変動する負荷下でもシステムの安定性を維持します。
概要
ターゲット追跡スケーリングルールは、簡易スケーリングルールを基盤とした高度なタイプです。ユーザーは CloudMonitor のメトリックを選択し、目標値を指定します。Auto Scaling は自動的に追加または削除すべきインスタンス数を計算し、メトリックをその目標値付近に維持します。
Auto Scaling では、ステップスケーリングルール、予測スケーリングルール、簡易スケーリングルール、およびターゲット追跡スケーリングルールの 4 種類のスケーリングルールがサポートされています。スケーリングルールの概要をご参照ください。
メトリックと特徴
メトリック
選択するメトリックは、スケーリンググループ内のインスタンス全体の負荷を反映し、インスタンス数の変化に比例して変動する必要があります。
サポートされる CloudMonitor のメトリックは、スケーリンググループのタイプによって異なります。
-
ECS スケーリンググループ
API メトリック
コンソールメトリック
CpuUtilization
(ECS) 平均 CPU 使用率
IntranetRx
(ECS) 平均インバウンド内部トラフィック
IntranetTx
(ECS) 平均アウトバウンド内部トラフィック
ClassicInternetRx/VpcInternetRx
(ECS) 平均インバウンドパブリックトラフィック
説明-
スケーリンググループが クラシックネットワーク を使用している場合、このメトリックはクラシックネットワーク経由の平均インバウンドパブリックトラフィックを示します。
-
スケーリンググループが VPC を使用している場合、このメトリックは VPC 経由の平均インバウンドパブリックトラフィックを示します。
ClassicInternetTx/VpcInternetTx
(ECS) 平均アウトバウンドパブリックトラフィック
説明-
スケーリンググループが クラシックネットワーク を使用している場合、このメトリックはクラシックネットワーク経由の平均アウトバウンドパブリックトラフィックを示します。
-
スケーリンググループが VPC を使用している場合、このメトリックは VPC 経由の平均アウトバウンドパブリックトラフィックを示します。
MemoryUtilization
(エージェント) メモリ
CloudMonitor エージェントによって収集されたメモリ使用率です。
LoadBalancerRealServerAverageQps
(ALB) サーバーグループのスタンドアロン QPS
説明このメトリックを選択する場合、対応する ALB サーバーグループも指定する必要があります。
-
-
ECI スケーリンググループ
API メトリック
コンソールメトリック
EciPodCpuUtilization
CPU 使用率
EciPodMemoryUtilization
メモリ
LoadBalancerRealServerAverageQps
(ALB) サーバーグループのスタンドアロン QPS
説明このメトリックを選択する場合、対応する ALB サーバーグループ も指定する必要があります。
特徴
-
スケールインの無効化:このルールによるインスタンスの自動削除を防止します。スケールインの無効化 機能を有効にすると、スケールアウトのみが実行されます。
スケールインの無効化 を有効にするには、スケーリングルールの作成 ページで
スイッチをオンにして スケールインの無効化 を有効にしてください。または、CreateScalingRule を呼び出し、DisableScaleIn を true に設定してください。-
スケールインの無効化 が有効の場合、このルールはスケールアウト用の監視タスクのみを作成します。スケールインは別途制御する必要があります(例:別のメトリックを監視し、簡易スケーリングルールをトリガーする別の監視タスクを使用)。
-
スケールインの無効化 が無効の場合、このルールはスケールアウトおよびスケールインの両方の監視タスクを管理します。
-
-
インスタンスのウォームアップ時間:新しく追加されたインスタンスが初期化を完了し、スケーリンググループのメトリックに寄与できるようになるまでの時間です。
新しいインスタンスは、サービスデプロイ、ロードバランサーのヘルスチェック、データ収集を完了した後、安定したメトリックを報告できます。スケーリングルールに対して適切な インスタンスのウォームアップ時間 を設定してください。スケーリンググループは、この期間中にスケーリングルールの実行を拒否します。
ウォームアップ期間の影響:
-
ウォームアップ中、インスタンスは CloudMonitor にデータを報告しません。CloudMonitor はウォームアップ中のインスタンスをメトリックの集約から除外します。
-
ウォームアップ後、インスタンスはデータを報告し、スケーリンググループの容量に含まれます。
-
ウォームアップ中のインスタンスは、次のスケールアウトを計算する際の基準容量から除外されます。
例:スケーリンググループに 2 台のインスタンスがあります。スケールアウトにより 5 台のインスタンスが追加され、ウォームアップ時間が 300 秒に設定されています。ウォームアップ中に別のスケールアウトがトリガーされた場合、計算は引き続き基準容量 2 台を使用します。
-
スケールイン中、Auto Scaling は過去のアクティビティに基づいてデフォルトのクールダウン時間を設定し、データ遅延による連続的なスケールインアクティビティによってウォームアップ中のインスタンスが削除されることを防止します。
-
簡易スケーリングルールとの比較
以下の表は、ターゲット追跡スケーリングルールと簡易スケーリングルールを比較したものです。
|
項目 |
簡易スケーリングルール |
ターゲット追跡スケーリングルール |
|
ユーザーの関与度 |
高い。 リソース使用量に応じてスケーリングアクティビティをカスタマイズできますが、アクティビティを監視し、しきい値を手動で管理する必要があります。 |
低い。 スケーリングはフルマネージドです。ユーザーはメトリクス目標値を指定するだけで済みます。 |
|
調整粒度 |
固定。 経験に基づいて追加または削除するインスタンス数を固定値として設定します。ルールはリアルタイムのメトリック変化に反応できません。 |
正確。 ルールは過去のメトリックと目標値に基づいてインスタンス数を計算し、目標値付近を維持するために細かい動的調整を行います。 |
|
調整プロセス |
詳細な制御が不足しています。
|
柔軟な制御を提供します。
|
ターゲット追跡スケーリングルールの作成
注意事項
ターゲット追跡スケーリングルールを作成する前に、以下の点にご注意ください。
-
1 つのスケーリンググループ内では、メトリクスタイプごとに 1 つのターゲット追跡スケーリングルールしか設定できません。
-
ターゲット追跡スケーリングルールを作成すると、自動的に 2 つの CloudMonitor 監視タスクが作成されます。
-
これらのタスクは変更または削除できません。表示、有効化、無効化のみ可能です。タスクを削除するには、対応するターゲット追跡スケーリングルールを削除してください。
-
スケールアウトタスクは積極的なポリシーを、スケールインタスクは保守的なポリシーを使用します。
例:サンプリング間隔が 60 秒の場合、スケールアウトはしきい値を超えた状態が 3 分間連続で発生した後にトリガーされ、スケールインはしきい値を下回った状態が 15 分間連続で発生した後にトリガーされます。
-
トリガーされると、Auto Scaling は過去のメトリックに基づいてインスタンス数を計算します。スケールアウト時は切り上げ、スケールイン時は切り捨てを行います。
例:追加すべきインスタンス数の計算結果が 1.5 の場合、2 台が追加されます。削除すべきインスタンス数の計算結果が 1.5 の場合、1 台が削除されます。
-
-
メトリックデータが不十分な場合、スケーリングアクティビティはトリガーされません。
-
インスタンス数が少ない場合、各インスタンスが集約メトリックに与える影響が大きいため、メトリック値が目標値から大きく外れる可能性があります。
例:スケールイン中、計算された削除数が 1 未満の場合、監視タスクはアラーム状態のままとなり、アクティビティがトリガーされないことがあります。
操作手順
Auto Scaling コンソールまたは API オペレーションを使用して、ターゲット追跡スケーリングルールを作成できます。
-
コンソール:スケーリンググループを選択し、ルールを設定します。スケーリングルールの設定をご参照ください。
-
API:CreateScalingRule を呼び出して、ターゲット追跡スケーリングルールを作成します。