Amazon ECS コンテナインスタンスをドレインする - Amazon Elastic Container Service

Amazon ECS コンテナインスタンスをドレインする

クラスターからコンテナインスタンスを削除する必要がある場合があります。例えば、システム更新を実行したり、クラスターキャパシティーをスケールダウンしたりする場合などです。Amazon ECS では、コンテナインスタンスをDRAINING ステータスに遷移する能力を提供します。これは、コンテナインスタンスのドレインと呼ばれます。コンテナインスタンスを DRAINING に設定すると、Amazon ECS によって新規タスクがそのコンテナインスタンスに配置されなくなります。

サービスのドレイニング動作

PENDING 状態にあるサービスの一部であるタスクは、直ちに停止されます。クラスター内に利用可能なコンテナインスタンス容量がある場合、サービススケジューラによって置き換えタスクが開始されます。十分なコンテナインスタンス容量がない場合、問題を示すサービスイベントメッセージが送信されます。

RUNNING 状態にあるコンテナインスタンス上のサービスの一部であるタスクは、STOPPED 状態に移行します。サービススケジューラは、サービスのデプロイタイプ、デプロイ設定パラメータ、minimumHealthyPercent および maximumPercent に従って、タスクを置き換えようとします。詳細については、「Amazon ECS サービス」および「Amazon ECS サービス定義パラメータ」を参照してください。

  • minimumHealthyPercent が 100% を下回っている場合、タスクの代替中、スケジューラは一時的に desiredCount を無視できます。例えば、desiredCount が 4 つのタスクの場合、最小値 50% でスケジューラは 2 つの既存タスクを停止してから 2 つの新規タスクを開始できます。最小が 100% の場合、サービススケジューラは、代替タスクが正常な状態と見なされるまで既存タスクを削除できません。ロードバランサーを使用しないサービスのタスクが RUNNING 状態にある場合、正常な状態と見なされます。ロードバランサーを使用するサービスのタスクは、RUNNING 状態にあり、そのタスクをホストするコンテナインスタンスがロードバランサーによって正常と報告された場合に、正常であると見なされます。

    重要

    スポットインスタンスを使用していて、minimumHealthyPercent が 100% 以上の場合、サービスには、スポットインスタンスが終了する前にタスクを置き換えるための十分な時間がありません。

  • maximumPercent パラメータは、タスクの置き換え中に実行できるタスク数の上限を表します。これは、置き換えのバッチサイズを定義するために使用できます。例えば、desiredCount が 4 つのタスクで、最大が 200% であればドレインされる 4 つのタスクを停止する前に 4 つの新規タスクを開始できます (これを行うために必要なクラスターリソースを使用できる場合)。最大が 100% の場合、代替タスクは、ドレインするタスクが停止するまで開始できません。

    重要

    minimumHealthyPercentmaximumPercent の両方が 100% の場合、サービスは既存のタスクを削除できず、代替タスクを開始することもできません。これにより、コンテナインスタンスのドレインの成功を防止し、新たなデプロイが防止されます。

スタンドアロンタスクのドレイニング動作

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

Amazon ECS マネージドインスタンスのドレイニング動作

Amazon ECS マネージドインスタンスの終了プロセスは、コストを最適化し、システムの健全性を維持しながら、ワークロードを正常に移行します。終了システムには、インスタンスの終了に関する 3 つの異なる決定パスがあり、それぞれのタイミングの特性やお客様に影響する事項が異なります。

お客様が開始した終了

コンテナインスタンスをすぐにサービスから削除する必要がある場合に、インスタンスの削除を直接制御できます。force リクエストパラメータを true に設定して deregister-container-instance を実行すると、ワークロードが実行中であっても即時終了が必要になります。

システムによるアイドル終了

ワークロードを提供しなくなったインスタンスを識別できる、インテリジェントなアイドル検出によるコスト最適化を実装します。Elastic Workload Service (EWS) は、インスタンス使用率をモニタリングし、設定可能な期間アイドル状態を維持したインスタンスの終了を開始する、高度なアイドル検出アルゴリズムを実装します。

インフラストラクチャの更新の終了

ノードマネージャーの自然減衰ポリシーによりプロアクティブインフラストラクチャ管理を実装します。このポリシーでは、インスタンスを定期的に更新し、確実に最新のプラットフォームバージョンを使用して、セキュリティ体制が維持されるようにします。ノード マネージャーは、time–to–live (TTL) ポリシーを実装します。このポリシーでは、最大運用ライフタイムに到達したインスタンスの正常な終了を開始します。

終了システムは、ワークロードの継続性とインフラストラクチャ管理要件のバランスを取る、2 段階のアプローチを実行します。

フェーズ 1: 正常な完了期間

このフェーズでは、システムはワークロードの継続性を優先する、正常なドレイニング戦略を実行します。サービスタスクは、通常の Amazon ECS スケジューリングプロセスによって正常にドレインされます。スタンドアロンタスクは自然に完了する可能性があるため、実行が継続されます。システムは、自然な完了プロセスを通じて停止状態に達するように、すべてのタスクをモニタリングします。

フェーズ 2: 厳格な期限の適用

正常な完了が、許容可能な期間内に終了目標を達成しない場合、システムは厳格な期限の適用を実行します。厳格な期限では、通常ドレイン開始日時に 7 日を加えて設定されるため、運用要件は維持されますが、正常な完了にはかなりの時間がかかります。強制には、強制登録解除手順の自動実行と、完了ステータスを考慮しない残りのすべてのタスクの即時終了が含まれます。

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

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

手順

次の手順に従って、新しい AWS マネジメントコンソール を使用してコンテナインスタンスをドレインする設定ができます。

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

AWS マネジメントコンソール
  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. ナビゲーションペインで [Clusters] (クラスター) を選択してください。

  3. [Clusters] (クラスター) ページで、インスタンスをホストするクラスターを選択します。

  4. [Cluster : name] (クラスター: 名前) のページで、[Infrastructure] (インフラストラクチャ) タブを選択します。次に、[Container instances] (コンテナインスタンス) タブを選択し、ドレインしたい各コンテナインスタンスのチェックボックスをオンにします。

  5. [アクション][ドレイン] の順に選択します。