Amazon ECS サービス - Amazon ECS

Amazon ECS サービス

Amazon ECS サービスを使用すると、Amazon ECS クラスター内で、タスク定義の指定した数のインスタンスを同時に実行して維持できます。タスクが何らかの理由で失敗または停止した場合、Amazon ECS サービススケジューラは、タスク定義の別のインスタンスを起動してそれに置き換え、サービスで必要数のタスクを維持します。

サービスで必要数のタスクを維持することに加えて、オプションでロードバランサーの背後でサービスを実行することもできます。ロードバランサーは、サービスに関連付けられたタスク間でトラフィックを分散させます。

サービススケジューラの概念

サービススケジューラは、長期実行するステートレスサービスおよびアプリケーションに適しています。サービススケジューラにより、指定したスケジュール戦略が順守され、タスクが失敗したときに (基盤となるインフラストラクチャに何らかの理由で障害が発生した場合などに) タスクが再スケジュールされます。タスク配置の戦略と制約を使用して、スケジューラがタスクを配置および終了する方法をカスタマイズできます。サービス内のタスクが停止すると、スケジューラはタスクを置き換えるために新しいタスクを起動します。このプロセスは、サービスが使用するスケジュール戦略 (サービスタイプとも言う) に基づいて、サービスが実行中のタスクの必要数に達するまで続行されます。

サービススケジューラには、タスクが繰り返し起動に失敗した場合にタスクを再起動する頻度を調整するロジックが含まれています。タスクが RUNNING 状態にならずに停止した場合 (タスクに startedAt タイムスタンプがあることで判断されます)、サービススケジューラは起動の試行の増分的な減速を開始し、サービスイベントメッセージを出力します。この動作により、失敗したタスクに対して不必要なリソースの使用が回避され、問題を解決できる可能性が生まれます。サービスが更新されると、サービススケジューラは正常な動作を再開します。詳細については、「サービスの調整ロジック」および「サービスイベントメッセージ」を参照してください。

利用できる 2 つのサービススケジューラ戦略があります。

  • REPLICA — レプリカスケジュール戦略では、クラスター全体で必要数のタスクを配置して維持します。デフォルトでは、サービススケジューラによってタスクはアベイラビリティーゾーン間で分散されます。タスク配置の戦略と制約を使用すると、タスク配置の決定をカスタマイズできます。詳細については、「レプリカ」を参照してください。

  • DAEMON — デーモンのスケジュール戦略では、指定したすべてのタスク配置制約を満たすクラスター内のアクティブなコンテナインスタンスごとに、1 つのタスクのみをデプロイします。この戦略を使用する場合、タスクの必要数や配置戦略、サービスの Auto Scaling ポリシーを指定する必要はありません。詳細については、「」を参照してください。

    注記

    Fargate タスクは DAEMON スケジューリング戦略をサポートしていません。

レプリカ

レプリカスケジュール戦略では、クラスターに必要数のタスクを配置して維持します。

Fargate でタスクを実行するサービスを作成する場合、サービススケジューラは、新しいタスクの起動時や実行中タスクの停止時に、アベイラビリティーゾーン間の負荷バランスを維持します。タスク配置戦略や制約を指定する必要はありません。

その他のサービスの概念

  • オプションで、ロードバランサーの背後でサービスを実行できます。詳細については、「サービスの負荷分散」を参照してください。

  • オプションで、サービスのデプロイ設定を指定できます。デプロイは、タスク定義またはサービスの必要数を更新することでトリガーされます。デプロイ中、サービススケジューラは、最小ヘルス率最大ヘルス率のパラメータを使用して、デプロイ戦略を判断します。詳細については、「サービス定義パラメータ」を参照してください。

  • サービスはオプションで Amazon ECS サービス検出 を使用するように設定できます。サービス検出 は Amazon Route 53 自動命名 API を使用して、サービスのタスクの DNS エントリを管理し、VPC 内で検出できるようにします。詳細については、「サービス検出」を参照してください。

  • サービスを削除するときに、クリーンアップが必要なタスクがまだ実行中の場合、サービスステータスは ACTIVE から DRAINING に移行し、そのサービスはコンソールまたは ListServices API オペレーションで表示されなくなります。すべてのタスクが STOPPING または STOPPED ステータスに以降されたら、サービスステータスは DRAINING から INACTIVE になります。ステータスが DRAINING または INACTIVE のサービスは、DescribeServices API オペレーションで引き続き表示できます。ただし、INACTIVE ステータスのサービスは、後で Amazon ECS によって保存されたレコードからクリーンアップされて削除され、それらのサービスに対して DescribeServices を呼び出すと、ServiceNotFoundException エラーが返る可能性があります。