Amazon Elastic Container Service (Amazon ECS) タスクが STOPPED 状態に移行するまでに長い時間がかかります。または、コンテナインスタンスが DRAINING に設定されているのに Amazon ECS タスクが RUNNING 状態のままになります。
簡単な説明
ECS インスタンスを DRAINING に設定すると、Amazon ECS では新しいタスクがコンテナインスタンスに配置するようにスケジュールされなくなります。Amazon ECS は、PENDING 状態のサービスタスクをただちに停止します。Amazon ECS は、RUNNING 状態のサービスタスクを STOPPED 状態に移行します。PENDING または RUNNING 状態のスタンドアロンタスクは影響を受けません。スタンドアロンタスクを停止するには、自動的に停止するまで待つか、手動で停止します。
設定パラメータまたはタスクに問題があると、タスクが RUNNING 状態のままになったり、STOPPED 状態への移行が遅れたりすることがあります。
これらの問題をトラブルシューティングするには、次のタスクを実行します。
- DeploymentConfiguration パラメータを更新する
- 登録解除遅延値を更新する
- ECS_CONTAINER_STOP_TIMEOUT 値を更新する
- 他のタスク関連の問題がないか探す
解決策
停止に時間がかかる Amazon ECS タスクをトラブルシューティングするには、次のタスクを実行します。
DeploymentConfiguration パラメータを更新する
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [クラスター] をクリックします。次に、コンテナインスタンスがドレインしているクラスターを選択します。
- [インフラストラクチャ] タブをクリックします。
- [コンテナインスタンス] で、DRAINING のステータスでフィルタリングします。
- コンテナインスタンスを選択し、ドレインが発生している、またはドレインに時間がかかっているタスクのサービスを調べます。
- [サービス] タブをクリックし、サービスを選択して、[デプロイ] をクリックします。
- minimumHealthyPercent と maximumPercent の値を確認します。
注: RUNNING 状態のコンテナインスタンス上のサービスタスクは停止され、サービスのデプロイ設定パラメータに従って置き換えられます。詳細については、「Amazon ECS コンテナインスタンスをドレインする」を参照してください。
登録解除遅延値を更新する
重要: 次のステップは、Application Load Balancer または Network Load Balancer を使用するサービスにのみ適用されます。サービスが Classic Load Balancer を使用している場合は、Connection Draining 値を確認してください。
次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションペインで [クラスター] をクリックし、コンテナインスタンスがドレインしているクラスターを選択します。
- [サービス] タブをクリックし、スタックが RUNNING のままになっているサービスを選択します。
- [ターゲットグループ名] をクリックします。
- [詳細] タブを下にスクロールし、[登録解除の遅延] チェックボックスを選択します。
ECS_CONTAINER_STOP_TIMEOUT 値を更新する
次の手順を実行します。
-
セキュアシェル (SSH) を使用してコンテナインスタンスに接続します。
-
ECS_CONTAINER_STOP_TIMEOUT 値を確認するには、次のコマンドを実行します。
docker inspect ecs-agent --format '{{json .Config.Env}}'
-
ECS_CONTAINER_STOP_TIMEOUT の値がある場合は、期間の値を確認してください。
注: ECS_CONTAINER_STOP_TIMEOUT は、Amazon ECS がコンテナを終了するまでに待機する時間を定義する ECS コンテナエージェントパラメータです。タスクが停止すると、時間がカウントされ始めます。ECS_CONTAINER_STOP_TIMEOUT パラメータが出力に表示されない場合、Amazon ECS はデフォルト値の 30 秒を使用します。
他のタスク関連の問題がないか探す
他のタスク関連の問題を探すには、SSH を使用して Linux インスタンスに接続します。次に、以下の手順を実行します。
関連情報
Amazon ECS コンテナインスタンスをドレインする