ターゲットトラッキングスケーリング機能は、Auto scalingとCloudMonitorの深い統合の結果です。 この機能を使用して、より信頼性が高く、正確で、迅速な方法でスケーリングポリシーを定義できます。 アクセストラフィックの突然の増加やハードウェア障害など、ビジネスの実行中に予期しない問題が発生した場合は、ターゲット追跡スケーリングルールを作成して、自動スケーリングを迅速にトリガーし、システムの信頼性と可用性を確保できます。
説明
ターゲット追跡スケーリングルールは、単純なスケーリングルールに基づいて開発された新しいタイプのスケーリングルールです。 ターゲットトラッキングスケーリングルールを作成するときは、CloudMonitorメトリックとそのメトリックのターゲット値を指定する必要があります。 次に、Auto Scalingは、必要なインスタンス数を計算し、計算結果に基づいてインスタンスをスケールして、CloudMonitorメトリック値を目標値に近づけます。
Auto Scalingでは、ステップスケーリングルール、予測スケーリングルール、シンプルスケーリングルール、ターゲット追跡スケーリングルールがサポートされています。 詳細については、「スケーリングルールの概要」をご参照ください。
メトリクスと機能
メトリクス
CloudMonitorのすべてのメトリクスを使用してターゲットトラッキングスケーリングルールを作成できるわけではありません。 ターゲット追跡スケーリングルールに設定できるメトリックは、有効な使用率メトリックである必要があり、スケーリンググループ内のインスタンスのワークロードに関する情報を記述できます。 メトリック値は、スケーリンググループ内のインスタンス数に比例して増減できます。
使用するメトリックが上記の要件を満たしていることを確認する必要があります。 次の表に、さまざまなタイプのスケーリンググループでターゲット追跡スケーリングルールでサポートされているメトリックを示します。
ECSタイプのスケーリンググループ
APIベースのメトリック
コンソールベースのメトリック
CpuUtilization
(ECS) 平均CPU使用率
イントラネットRx
(ECS) 平均受信内部トラフィック
イントラネットTx
(ECS) 平均アウトバウンド内部トラフィック
ClassicInternetRx/VpcInternetRx
(ECS) 平均受信パブリックトラフィック
説明スケーリンググループの作成時に [ネットワークタイプ] を [クラシックネットワーク] に設定した場合、(ECS) Average Inbound Public Trafficメトリックは、クラシックネットワーク上のスケーリンググループ内のインターネットからElastic Compute Service (ECS) インスタンスへの平均インバウンドトラフィックを指定します。
スケーリンググループの作成時に [ネットワークタイプ] を [VPC] に設定した場合、(ECS) 平均インバウンドパブリックトラフィックメトリックには、インターネットからスケーリンググループ内のECSインスタンスへの仮想プライベートクラウド (VPC) 経由の平均インバウンドトラフィックが指定されます。
ClassicInternetTx/VpcInternetTx
(ECS) 平均送信パブリックトラフィック
説明スケーリンググループの作成時に [ネットワークタイプ] を [クラシックネットワーク] に設定した場合、(ECS) Average Outbound Public Trafficメトリックは、スケーリンググループ内のECSインスタンスからクラシックネットワークを介したインターネットへの平均アウトバウンドトラフィックを指定します。
スケーリンググループの作成時に [ネットワークタイプ] を [VPC] に設定した場合、(ECS) Average Outbound Public Trafficメトリックは、スケーリンググループ内のECSインスタンスからVPC経由のインターネットへの平均アウトバウンドトラフィックを指定します。
MemoryUtilization
(エージェント) メモリ
CloudMonitorクライアントによって収集されたメモリ使用量。
LoadBalancerRealServerAverageQps
(ALB) バックエンドサーバーあたりのQPS
説明メトリックタイプでこのメトリックを選択した場合は、ALBサーバーグループも設定する必要があります。
Elastic Container Instanceタイプのスケーリンググループ
APIベースのメトリック
コンソールベースのメトリック
EciPodCpuUtilization
CPU 使用率
EciPodMemoryUtilization
メモリ
LoadBalancerRealServerAverageQps
(ALB) バックエンドサーバーあたりのQPS
説明メトリックタイプでこのメトリックを選択した場合は、ALBサーバーグループも設定する必要があります。
特徴
スケールインの無効化: ターゲット追跡スケーリングルールの実行後にスケーリンググループからインスタンスを削除しない場合は、[スケールインの無効化] をオンにします。
スケールインを無効にするには、Auto Scalingコンソールの [スケーリングルールの作成] ダイアログボックスに移動し、[スケールインの無効化] の横にあるをオンにします。 CreateScalingRule操作を呼び出してスケールインを無効にするときに、DisableScaleInをtrueに設定することもできます。
[スケールインの無効化] をオンにすると、スケールアウト用のイベントトリガータスクが作成されます。 スケールインのイベントトリガータスクは作成または削除されません。 他の方法を使用して、スケーリンググループ内のインスタンスをスケールインできます。 たとえば、イベントトリガータスクを作成して他のメトリックを監視し、単純なスケーリングルールを実行してスケールイン要求に応答することができます。
[スケールインの無効化] をオフにすると、スケールアウト用のイベントトリガータスクとスケールイン用のイベントトリガータスクが同時に作成されます。
インスタンスのウォームアップ時間: 新しく作成されたインスタンスがウォームアップするのに必要な期間。 ウォームアップ期間中、Auto Scalingはインスタンスのメトリック統計を収集しません。
スケーリンググループに新たに追加されたインスタンスは、サービスをデプロイし、Server load Balancer (SLB) ヘルスチェックを実行し、インスタンスのデータを収集した後にのみ、CloudMonitorに報告される指定されたメトリックに貢献できます。 サービスをデプロイし、SLBヘルスチェックを実行し、インスタンスのデータを収集すると、スケーリンググループで新しいスケーリングアクティビティをトリガーすることはできません。 頻繁なスケーリング活動を防ぐために、ビジネス要件に基づいてウォームアップ時間を設定することをお勧めします。 ウォームアップ期間中、Auto Scalingはスケーリンググループでスケーリングルールを実行する要求を拒否します。
インスタンスのウォームアップ時間を設定する前に、次の項目に注意してください。
インスタンスのウォームアップ時間が経過する前に、インスタンスをスケーリンググループに追加できます。 ただし、インスタンスはCloudMonitorメトリクスには寄与しません。 インスタンスのメトリックデータは、スケーリンググループの集計メトリックデータにカウントされません。 CloudMonitorは、ウォームアップ中のインスタンスをスケーリンググループの容量の一部とは見なしません。
インスタンスのデータは、インスタンスのウォームアップ時間が経過した後にのみCloudMonitorに報告されます。 その後、CloudMonitorはインスタンスをスケーリンググループの容量の一部と見なします。
スケーリンググループでウォームアップされているインスタンスは、スケールアウトのベースとしてカウントすることはできません。
たとえば、2つのインスタンスを含むスケーリンググループがあり、5つのインスタンスが追加されるスケールアウトがトリガーされます。 5つのインスタンスのウォームアップに300秒を設定した場合、インスタンスのウォームアップ時間が経過する前に、2つのインスタンスのみが別のスケールアウトのベースと見なされます。
スケールイン中、Auto Scalingは適切なデフォルトのクールダウン時間を設定して、データ遅延によるスケールインの継続によりウォームアップ中のインスタンスがスケーリンググループから削除されないようにします。
ターゲット追跡スケーリングルールと単純スケーリングルールの比較
次の表に、ターゲット追跡スケーリングルールと単純スケーリングルールの違いを示します。
項目 | 単純なルール | ターゲット追跡スケーリングルール |
ユーザーエンゲージメント | 高いユーザーエンゲージメント。 ビジネス要件に基づいてカスタムスケーリングルールを作成し、オンデマンドでインスタンスをスケールできます。 ただし、特定のスケーリングアクティビティとターゲット値を更新しておく必要があります。 | 低いユーザー関与。 スケーリング方法とスケーリング時間を組み合わせることで、目標のメトリック値にのみ焦点を合わせることができます。 |
調整の粒度 | 固定調整。 単純なスケーリングルールを作成して、スケールインまたはスケールアウトをトリガーできます。 メトリックの実際のステータスに関する情報を取得することはできません。 シンプルなスケーリングルールは、経験に基づいてのみ作成されます。 動的な調整はできません。 | 正確な調整。 ターゲット追跡スケーリングルールを作成するときは、メトリックを指定し、メトリックのターゲット値を設定する必要があります。 Auto Scalingは、メトリックのモニタリング履歴と、メトリックに設定したターゲット値に基づいて、スケーリングアクティビティに必要なインスタンス数を計算します。 自動スケーリングは、調整プロセスを簡略化して、メトリック値を目標値またはその近くに保ちます。 このようにして、スケーリンググループ内のインスタンスを正確な方法で迅速かつ動的にスケーリングできます。 |
調整プロセス | 調整プロセスの制御が少ない。
| 調整プロセスの柔軟な制御。
|
ターゲット追跡スケーリングルールの作成
注意
ターゲット追跡ルールを作成する前に、次の項目に注意してください。
複数のターゲット追跡スケーリングルールにメトリックを指定することはできません。
ターゲット追跡ルールを作成すると、2つのイベントトリガータスクが自動的に作成されます。
イベントトリガータスクを変更または削除することはできません。 イベントトリガータスクの表示、無効化、有効化のみできます。 イベントトリガータスクを削除する場合は、対応するターゲットトラッキングルールを削除します。
1つのイベントトリガータスクは、保守的なスケールインポリシーを使用します。 もう1つのイベントトリガータスクは、プログレッシブスケールアウトポリシーを使用します。
たとえば、プログレッシブスケールアウトポリシーを使用するイベントトリガータスクが60秒ごとにメトリックデータを収集する場合、スケールアウトのしきい値に3分間連続して到達した後にスケールアウトがトリガーされます。 保守的なスケールインポリシーを使用するイベントトリガータスクが60秒ごとにメトリックデータを収集する場合、スケールインのしきい値に15分間連続して到達するとスケールインがトリガーされます。
イベントトリガータスクがアラートを報告すると、スケーリングアクティビティがトリガーされます。 Auto Scalingは、イベントトリガータスクで指定されたメトリックのモニタリング履歴に基づいて、スケーリングアクティビティに必要なインスタンス数を計算します。 スケールアウトの場合、必要な数のインスタンスを切り上げて、スケールアウト後もインスタンスが不足しないようにします。 スケールインの場合、スケーリンググループから削除されるインスタンスが多すぎるのを防ぐために、必要な数のインスタンスが切り捨てられます。
たとえば、スケールアウト要件を満たすために1.5のインスタンスが必要な場合、スケーリンググループに2つのインスタンスが追加されます。 スケールイン要件を満たすために1.5のインスタンスが必要な場合、1つのインスタンスがスケーリンググループから削除されます。
メトリックデータがしきい値に達していない場合、スケーリンググループでスケーリングアクティビティはトリガーされません。
スケーリンググループに少数のインスタンスが含まれている場合、メトリック値とターゲット値の間に大きな違いが見られることがあります。 インスタンス数の変更は、スケーリンググループの集計メトリック値に大きな影響を与えます。
たとえば、Auto Scalingで計算されたインスタンスの必要数が1未満の場合、アラートは継続的に報告されますが、スケールインはトリガーされません。
手順
Auto scalingコンソールを使用するか、API操作を呼び出して、スケーリンググループのターゲット追跡スケーリングルールを作成できます。
コンソール: ターゲット追跡スケーリングルールを作成するスケーリンググループを見つけて、ルールを作成します。 ターゲット追跡スケーリングルールの作成方法の詳細については、「スケーリングルールの管理」をご参照ください。
API: CreateScalingRule操作を呼び出して、ターゲット追跡スケーリングルールを作成します。 詳細については、「CreateScalingRule」をご参照ください。