コンテナインスタンスが DRAINING に設定されているときに、Amazon ECS タスクが停止するのに時間がかかるトラブルシューティング方法を教えてください。

最終更新日: 2019 年 9 月 4 日

Amazon Elastic Container Service (Amazon ECS) タスクが STOPPED 状態に移行するのに時間がかかっています。または、コンテナインスタンスが DRAINING に設定されている場合、Amazon ECS タスクが RUNNING 状態でスタックしています。どうすればこの問題を解決できますか?

簡単な説明

ECS インスタンスを DRAINING に設定すると、Amazon ECS は以下の処理を実行します。

  • 新しいタスクがコンテナインスタンスにスケジュールが配置されないようにする
  • RUNNING 状態のコンテナインスタンスでタスクを停止します。

設定パラメータまたはタスクの問題により、タスクが RUNNING 状態でスタックするか、STOPPED 状態に移行するまでに時間がかかることがあります。これらの問題をトラブルシューティングするには、次のオプションを検討します。

解決方法

DeploymentConfiguration パラメータが正しく設定されていることを確認する

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで、 クラスター を選択し、コンテナインスタンスがドレインされているクラスターを選択します。
  3. [ECS インスタンス] タブを選択し、[状態] セクションで DRAINING を選択します。
  4. コンテナインスタンスを選択し、ドレイン中またはドレインに長い時間がかかるタスクのサービスを見つけます。
  5. [サービス] タブを選択し、サービスを選択して、[デプロイ] を選択します。
  6. minimumHealthyPercent と maximumPercent の値を確認します。
    注意: RUNNING 状態にあるコンテナインスタンスのサービスタスクは、サービスのデプロイ設定パラメータ minimumHealthyPercent および maximumPercentに従って停止され、置き換えられます。

登録解除の遅延値が正しく設定されていることを確認する

重要 : 次の手順は、Application Load Balancer または Network Load Balancer を使用するサービスにのみ適用されます。サービスで Classic Load Balancer を使用している場合は、Connection Draining の値を確認します

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで、 クラスター を選択し、コンテナインスタンスがドレインされているクラスターを選択します。
  3. [サービス] タブを選択し、スタックが RUNNINGのままでスタックしているサービスを選択します。
  4. [ターゲットグループ名] を選択します。
  5. [詳細] タブで、下にスクロールし、[登録解除の遅延] チェックボックスをオンにします。

ECS_CONTAINER_STOP_TIMEOUT 値が正しく設定されていることを確認する

  1. SSH を使用してコンテナインスタンスに接続します
  2. docker inspect ecs-agent --format '{{json .Config.Env}}' コマンドを実行します。
  3. ECS_CONTAINER_STOP_TIMEOUT の値があるかどうかを確認します。
    注意: ECS_CONTAINER_STOP_TIMEOUT は、通常単独で終了しないコンテナを強制終了する前に Amazon ECS が待機する時間を定義する ECS コンテナエージェントパラメータです。タスクが停止するときに、期間のカウントが開始します。ステップ 2 でコマンドを実行した後で、出力に ECS_CONTAINER_STOP_TIMEOUT パラメータが表示されない場合、Amazon ECS はデフォルト値の 30 秒を使用します。

他のタスク関連の問題を探す

  1. SSH を使用してコンテナインスタンスに接続します
  2. Docker デーモンと Amazon ECS コンテナエージェントが Amazon Linux 1 AMI または Amazon Linux 2 AMI に対して実行されていることを確認します。
  3. logConfigurationによって設定されたログドライバーに基づいて、アプリケーションログを確認します。
    注意: たとえば、タスクで awslogs ログドライバーを使用している場合はAmazon CloudWatch Logs に問題がないか確認します

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合