ステップスケーリングポリシー - Amazon ECS

ステップスケーリングポリシー

Amazon ECS サービスのオートスケーリングは Application Auto Scaling ステップスケーリングポリシーの使用をサポートしていますが、代わりにターゲット追跡ポリシーを使用することをお勧めします。たとえば、CPU 使用率が特定のレベルを下回ったまたは上回ったときにサービスをスケーリングする場合は、Amazon ECS によって提供される CPU 使用率メトリクスに基づいてターゲット追跡スケーリングポリシーを作成します。詳細については、「ターゲット追跡スケーリングポリシー」を参照してください。

ステップスケーリングポリシーを使用して、スケーリングプロセスをトリガーする CloudWatch アラームを作成および管理します。ターゲット追跡アラームがユースケースで機能しない場合は、ステップスケーリングを使用できます。また、高度なスケーリングポリシー設定に、ターゲット追跡スケーリングをステップスケーリングと共に使用することもできます。たとえば、必要に応じて、使用率が一定のレベルに達したときにより積極的なレスポンスを設定できます。

サービスの Auto Scaling に関する考慮事項

スケーリングポリシーを使用する場合は、次の考慮事項に注意してください。

  • Amazon ECSは、CloudWatch に 1 分間隔でメトリクスを送信します。クラスターとサービスが CloudWatch にメトリクスを送信するまで、メトリクスは使用できません。また、まだ存在しないメトリクスに対して CloudWatch アラームを作成することはできません。

  • スケーリングポリシーは、クールダウン期間をサポートします。これは、以前のスケーリングアクティビティが有効になるまで待機する秒数です。

    • スケールアウトイベントでは、スケールアウトが継続的に (ただし過剰になることなく) 行われます。スケーリングポリシーを使用して サービスの Auto Scaling が正常にスケールアウトすると、クールダウン時間の計算が開始されます。スケーリングポリシーは、より大きなスケールアウトがトリガーされるか、クールダウン期間が終了しない限り、必要な容量を再度増加させません。このスケールアウトクールダウン期間が有効な間は、スケールアウトアクティビティを開始することで追加された容量は、次のスケールアウトアクティビティに予定される容量の一部として繰り入れられます。

    • スケールインイベントでは、アプリケーションの可用性を保護するために控えめにスケールインされます。そのため、スケールインアクティビティはクールダウン期間が終了するまでブロックされます。ただし、スケールインクールダウン期間中に別のアラームがスケールアウトアクティビティをトリガーした場合、サービスの Auto Scaling によってターゲットが即座にスケールアウトされます。この場合、スケールインクールダウン期間は停止し、完了しません。

  • ECS サービススケジューラは常に必要数を優先しますが、サービスにアクティブなスケーリングポリシーとアラームがある限り、サービスの Auto Scaling はユーザーが手動で設定した目的数を変更できます。

  • サービスの必要タスク数が容量最小値より小さく設定された状態で、アラームがスケールアウトアクティビティをトリガーしたとき、サービスの Auto Scaling が必要タスク数を容量最小値までスケールアップします。その後もアラームに関連付けられたスケーリングポリシーに基づいて、必要に応じてスケーリングし続けます。ただし、必要数はすでにキャパシティーの最小値より小さいため、スケールインアクティビティでは調整されません。

  • サービスの必要タスク数が容量最大値より大きく設定された状態で、アラームがスケールインアクティビティをトリガーしたとき、サービスの Auto Scaling が必要タスク数を容量最大値までスケールアウトします。その後もアラームに関連付けられたスケーリングポリシーに基づいて、必要に応じてスケーリングし続けます。ただし、必要タスク数はすでに容量最大値より大きいため、スケールアウトアクティビティでは調整されません。

  • 規模の拡大や縮小中、サービスの実際の実行中タスク数は、必要数とは異なり、サービスの Auto Scaling が開始点として使用する、処理能力として想定される値です。これにより、たとえば、追加タスクを配置するために十分なコンテナインスタンスリソースがない場合に、満たすことができない過剰な (ランナウェイ) スケーリングを防ぐことができます。後でコンテナインスタンスのキャパシティーを使用できるようになった場合、保留中の規模の拡大や縮小が続行され、クールダウン期間後にさらに規模の拡大や縮小を続行できることができます。

  • 実行する作業がないときにタスク数をゼロにスケーリングするには、容量最小値を 0 に設定します。ターゲット追跡スケーリングポリシーでは、実際の容量が 0 で、メトリクスがワークロードの需要があることを示している場合、サービスの Auto Scaling は 1 つのデータポイントの送信を待ってからスケールアウトします。この場合、開始点として可能な最小量だけスケールアウトしてから、実際の実行中のタスク数に基づいてスケーリングを再開します。

  • Application Auto Scaling は Amazon ECS デプロイの進行中にスケールインプロセスを無効にします。ただし、デプロイ中、中断されない限り、スケールアウトプロセスは引き続き実行されます。詳細については、「サービスの Auto Scaling とデプロイ」を参照してください。

Amazon ECS コンソール操作

サービスの Auto Scaling はデフォルトで無効になっています。有効にするには、Amazon ECS の AWS Management Console でサービスの [Auto Scaling] タブからスケーリングポリシーを設定します。

コンソールからスケーリングポリシーを操作するためのステップバイステップのガイダンスについては、「Amazon ECS サービスの作成」および「サービスの更新」を参照してください。ステップスケーリングの詳細とチュートリアルについては、AWS コンピューティングブログAmazon ECS での自動スケーリングを参照してください。ターゲット追跡のチュートリアルについては、「ターゲット追跡スケーリングポリシー」を参照してください。

Amazon ECS コンソールでサービスのスケーリングポリシーを設定すると、サービスはスケーラブルなターゲットとして Application Auto Scaling に自動的に登録され、スケーリングポリシーは正常に作成されるとすぐに有効になります。

AWS CLI および SDK の操作

サービスの Auto Scaling は Amazon ECS、CloudWatch、および Application Auto Scaling API と組み合わせることで機能します。サービスは Amazon ECS を使用して作成および更新され、アラームは CloudWatch を使用して作成されます。また、スケーリングポリシーは Application Auto Scaling で作成されます。

これら特定の API オペレーションの詳細については、Amazon Elastic Container Service API ReferenceAmazon CloudWatch API リファレンス、および Application Auto Scaling API リファレンス を参照してください。これらのサービス用の AWS CLI コマンドの詳細については、AWS CLI Command Reference の「ecs」、「cloudwatch」、および「application-autoscaling」を参照してください。

AWS CLI を使用して Amazon ECS サービスのスケーリングポリシーを設定するには

  1. register-scalable-target コマンドを使用して、スケーラブルなターゲットとして ECS サービスを登録します。

  2. put-scaling-policy コマンドを使用してスケーリングポリシーを作成します。

  3. [ステップスケーリング] put-metric-alarm コマンドを使用してスケーリングポリシーをトリガーするアラームを作成します。

AWS CLI を使用したスケーリングポリシーの設定の詳細については、Application Auto Scaling ユーザーガイド を参照してください。