コンテナインスタンスのドレイン - Amazon Elastic Container Service

コンテナインスタンスのドレイン

クラスターからコンテナインスタンスを削除する必要がある場合があります。たとえば、システム更新を実行する、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% の場合、代替タスクは、ドレインするタスクが停止するまで開始できません。

PENDING または RUNNING 状態のスタンドアロンタスクは影響を受けません。自分で停止するか、手動で停止するまで待つ必要があります。

インスタンスで実行されているすべてのタスクが STOPPED 状態に移行すると、コンテナインスタンスのドレインが完了します。コンテナインスタンスは、再びアクティブ化または削除されるまで、DRAINING 状態のままです。コンテナインスタンス上のタスクの状態を確認するには、ListTasks オペレーションを containerInstance パラメータと共に使用して、インスタンス上のタスクのリストを取得した後、各 Amazon リソースネーム (ARN) または各タスクの ID で DescribeTasks オペレーションを実行して、タスクの状態を確認します。

コンテナインスタンスがタスクのホスティングを再開する準備ができたら、コンテナインスタンスの状態を DRAINING から ACTIVE に変更します。Amazon ECS サービススケジューラは、コンテナインスタンスを再度検討してタスクを配置します。

コンテナインスタンスのドレイン

UpdateContainerInstancesState API アクションまたは update-container-instances-state コマンドを使用して、コンテナインスタンスのステータスを DRAINING に変更できます。

次の手順に従い、AWS Management Console を使用してコンテナインスタンスをドレインに設定できます。

コンテナインスタンスを DRAINING (AWS Management Console) に設定するには

  1. Amazon ECS コンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. ナビゲーションペインで、[Clusters] を選択し、クラスターを選択します。

  3. [ECS Instances] タブを選択し、ドレインする各コンテナインスタンスのチェックボックスをオンにします。

  4. [Actions]、[Drain instances] を選択します。

  5. インスタンスが処理されたら、[Done] を選択します。

  6. コンテナインスタンスを再度アクティブ化する場合は、同じ手順を繰り返しますが、[Actions] メニューから [Activate instances] を選択します。