Amazon ECS サービスを自動的にスケーリングする - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon ECS サービスを自動的にスケーリングする

オートスケーリングは、需要に応じて Amazon ECS サービス のタスクの必要数を自動的に増減する機能です。Amazon ECS は アプリケーション Auto Scaling サービスを活用してこの機能を提供します。詳細については、 ユーザーガイドの Application Auto Scaling リファレンスを参照してください。

Amazon ECS は、サービスの平均 CPU とメモリ使用量を含む CloudWatch メトリクスを発行します。詳細については、「サービス使用率」を参照してください。これらのメトリクスやその他の CloudWatch メトリクスを使用して、ピーク時に高需要に対応するためにサービスをスケールアウト (タスクを追加) したり、使用率の低い時間帯にコストを削減するためにサービスをスケールイン (実行するタスクを減らす) したりできます。

Amazon ECS Service Auto Scaling は、以下のタイプの自動スケーリングをサポートします。

考慮事項

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

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

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

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

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

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

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

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

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

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

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

  • Amazon ECS タスクには、いくつかの Application Auto Scaling オプションがあります。ターゲットトラッキングは最も使いやすいモードです。これにより、CPU 平均使用率などのメトリクスの目標値を設定するだけです。次に、オートスケーラーは、その値を達成するために必要なタスクの数を自動的に管理します。ステップスケーリングを使用すると、スケーリングメトリクスの特定のしきい値と、しきい値を超えたときに追加または削除するタスクの数を定義できるため、需要の変化に迅速に対応できます。さらに重要なことは、しきい値アラームが超過する時間を最小限に抑えることで、需要の変化に非常に迅速に対応できることです。

サービスの自動スケーリングとデプロイ

Application Auto Scaling は、Amazon ECS デプロイの進行中にスケールインプロセスをオフにします。ただし、スケールアウトプロセスは、中断しない限り、デプロイ中に引き続き発生します。デプロイの進行中にスケールアウトプロセスを中断する場合は、次の手順を実行します。

  1. Application Auto Scaling のスケーラブルターゲットに関連付けられたサービスのリソース ID を指定して、 describe-scalable-targets コマンドを呼び出します (例: service/default/sample-webapp)。出力を記録します。これは、次のコマンドを呼び出すときに必要になります。

  2. リソース ID、名前空間、およびスケーラブルなディメンションを指定して register-scalable-target コマンドを呼び出します。DynamicScalingInSuspendedDynamicScalingOutSuspended の両方に true を指定します。

  3. デプロイが完了したら、register-scalable-target コマンドを呼び出してスケーリングを再開できます。

詳細については、「Application Auto Scaling のスケーリングの中断と再開」を参照してください。