コンテナインスタンスのドレイン
クラスターからコンテナインスタンスを削除する必要がある場合があります。たとえば、システム更新を実行する、Docker デーモンを更新する、またはクラスターサイズを縮小する場合などです。Amazon ECS では、コンテナインスタンスをDRAINING
ステータスに遷移する能力を提供します。これは、コンテナインスタンスのドレインと呼ばれます。コンテナインスタンスを DRAINING
に設定すると、Amazon ECS によって新規タスクがそのコンテナインスタンスに配置されなくなります。
サービスのドレイニング動作
PENDING
状態にあるサービスの一部であるタスクは、直ちに停止されます。クラスター内に利用可能なコンテナインスタンス容量がある場合、サービススケジューラによって置き換えタスクが開始されます。十分なコンテナインスタンス容量がない場合、問題を示すサービスイベントメッセージが送信されます。
RUNNING
状態にあるコンテナインスタンス上のサービスの一部であるタスクは、STOPPED
状態に移行します。サービススケジューラは、サービスのデプロイ設定パラメータ、minimumHealthyPercent
および maximumPercent
に従って、タスクを置き換えようとします。詳細については、「サービス定義パラメータ」を参照してください。
-
minimumHealthyPercent
が 100% を下回っている場合、タスクの代替中、スケジューラは一時的にdesiredCount
を無視できます。たとえば、desiredCount
が 4 つのタスクの場合、最小値 50% でスケジューラは 2 つの既存タスクを停止してから 2 つの新規タスクを開始できます。最小が 100% の場合、サービススケジューラは、代替タスクが正常な状態と見なされるまで既存タスクを削除できません。ロードバランサーを使用しないサービスのタスクがRUNNING
状態にある場合、正常な状態と見なされます。ロードバランサーを使用するサービスのタスクは、RUNNING
状態にあり、そのタスクをホストするコンテナインスタンスがロードバランサーによって正常と報告された場合に、正常であると見なされます。 -
maximumPercent
パラメータは、タスクの代替中に実行できるタスク数の上限を表します。これにより代替バッチサイズを定義できます。たとえば、desiredCount
が 4 つのタスクで、最大が 200% であればドレインされる 4 つのタスクを停止する前に 4 つの新規タスクを開始できます (これを行うために必要なクラスターリソースを使用できる場合)。最大が 100% の場合、代替タスクは、ドレインするタスクが停止するまで開始できません。重要 minimumHealthyPercent
とmaximumPercent
の両方が 100% の場合、サービスは既存のタスクを削除できず、代替タスクを開始することもできません。これにより、コンテナインスタンスのドレインの成功を防止し、新たなデプロイが防止されます。
スタンドアロンタスクのドレイニング動作
PENDING
または RUNNING
状態のスタンドアロンタスクは影響を受けません。自分で停止するか、手動で停止するまで待つ必要があります。コンテナインスタンスは DRAINING
ステータスのままです。
インスタンスで実行されているすべてのタスクが STOPPED
状態に移行すると、コンテナインスタンスのドレインが完了します。コンテナインスタンスは、再びアクティブ化または削除されるまで、DRAINING
状態のままです。コンテナインスタンス上のタスクの状態を確認するには、ListTasks オペレーションを containerInstance
パラメータと共に使用して、インスタンス上のタスクのリストを取得した後、各 Amazon リソースネーム (ARN) または各タスクの ID で DescribeTasks オペレーションを実行して、タスクの状態を確認します。
コンテナインスタンスがタスクのホスティングを再開する準備ができたら、コンテナインスタンスの状態を DRAINING
から ACTIVE
に変更します。Amazon ECS サービススケジューラは、コンテナインスタンスを再度検討してタスクを配置します。