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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Amazon ECS コンソールのエクスペリエンス

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

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

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

AWS CLI および SDK の操作

Service Auto Scalingは、Amazon ECS、Amazon CloudWatch、およびアプリケーション Auto Scaling API の組み合わせによって可能になります。サービスは Amazon ECS で作成および更新され、アラームは CloudWatch で作成され、スケーリングポリシーは Application Auto Scaling で作成されます。

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

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

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

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

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

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