Amazon ECS でのコンテナのスケジュール - Amazon Elastic Container Service

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

Amazon ECS でのコンテナのスケジュール

Amazon Elastic Container Service (Amazon ECS) は、コンテナ化されたワークロードに柔軟なスケジューリング機能を提供する共有状態、オプティミスティック同時実行システムです。Amazon ECSスケジューラはAmazon ECS API と同じクラスターの状態情報を利用して、適切な配置を決定します。

Amazon ECS は、長時間実行されるタスクおよびアプリケーションにサービススケジューラを提供します。また、バッチジョブまたは単一実行タスクのスタンドアロンタスクまたはスケジュールされたタスクを実行することもできます。ニーズに最適なタスクを実行するためのタスク配置戦略や制約を指定できます。例えば、タスクを複数のアベイラビリティーゾーンにまたがって実行するか、単一のアベイラビリティーゾーン内で実行するかを指定できます。さらに、オプションとして、独自のカスタムまたはサードパーティーのスケジューラでタスクを統合することもできます。

サービススケジューラ

サービススケジューラは、長時間実行されるステートレスサービスやアプリケーションに適しています。サービススケジューラにより、指定したスケジューリング戦略が順守され、タスクが失敗したときに タスクが再スケジュールされます。例えば、基盤となるインフラストラクチャに障害が発生した場合、サービススケジューラはタスクを再スケジュールできます。

また、コンテナのヘルスチェックまたはロードバランサーのターゲットグループのヘルスチェックが失敗すると、サービススケジューラーによって、異常であると判断されたタスクが置き換えられます。この置き換え動作は、maximumPercent および desiredCount のサービス定義パラメータによって異なります。タスクが異常とマークされた場合、サービススケジューラーによってまず置き換えタスクが開始されます。置き換えタスクのヘルスステータスが HEALTHY になると、サービススケジューラーは異常のあるタスクを停止します。置き換えタスクのヘルスステータスが UNHEALTHY の場合、スケジューラーは異常のある置き換えタスクまたは既存の異常タスクのいずれかを停止して、タスク総数が desiredCount と等しくなるようにします。maximumPercent パラメーターによって、置き換えタスクを先に開始できないようにスケジューラーが制限されている場合、スケジューラーは異常のあるタスクをランダムに 1 つずつ停止して容量を解放してから置き換えタスクを開始します。異常のあるタスクがすべて正常なタスクに置き換えられるまで、起動と停止のプロセスが続きます。異常なタスクがすべて置き換えられ、正常なタスクだけが実行中になると、合計タスク数が desiredCount を超える場合、タスク数が desiredCount になるまで、正常なタスクが無作為に停止されます。maximumPercent および desiredCount の詳細については、「サービス定義パラメータ」を参照してください。

注記

この動作は、ローリング更新デプロイタイプを使用するサービスによって実行および管理されるタスクには適用されません。ローリング更新中、サービススケジューラーはまず異常なタスクを停止してから置き換えタスクを開始します。

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

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

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

    注記

    Fargate タスクは DAEMON スケジュール戦略をサポートしません。

サービススケジューラはオプションで、タスクがElastic Load Balancingロードバランサーに登録されていることも確認します。サービススケジューラで維持されているサービスを更新できます。これには、新しいタスク定義のデプロイや、実行中のタスクの必要数の変更が含まれる場合があります。デフォルトでは、サービススケジューラによってタスクは複数のアベイラビリティーゾーン間で分散されます。ただし、タスク配置戦略と制約を使用すると、タスク配置の決定をカスタマイズできます。詳細については、「Amazon ECS サービス」を参照してください。

スタンドアロンタスク

バッチジョブなど、作業を実行してから停止するプロセスがある場合、スタンドアロンタスクを実行できます。例えば、キューに作業が入ったときに RunTask を呼び出す処理を入れることができます。タスクはキューから作業を引き出し、作業を実行して、その後終了します。RunTaskを使用すると、デフォルトのタスク配置戦略でクラスター全体にタスクをランダムに分散させることができます。これにより、単一のインスタンスが不均衡な数のタスクを取得する可能性を最小限に抑えることができます。また、RunTask を使用して、スケジューラがタスク配置戦略と制約を使用してタスクを配置する方法をカスタマイズできます。

カスタムスケジューラ

Amazon ECS により、独自のスケジューラを作成、またはサードパーティーのスケジューラを使用することができます。詳細については、「Amazon ECS のカスタムスケジューラを作成する方法」を参照してください。カスタムスケジューラは StartTask API オペレーションを使用して、クラスター内の特定のコンテナインスタンスにタスクを配置します。

注記

カスタムスケジューラは、EC2 インスタンスでホストされるタスクとのみ互換性があります。Fargate で Amazon ECS を使用する場合、 StartTask API は機能しません。