Fargate での Amazon ECS タスクのヘルスチェック失敗のトラブルシューティング方法を教えてください。

最終更新日: 2021 年 1 月 8 日

AWS Fargate での Amazon Elastic Container Service (Amazon ECS) タスクでヘルスチェックに失敗します。

解決方法

ロードバランサーの最も一般的なエラーのトラブルシューティング

次のエラーのいずれかを受け取った場合:

  • (サービス AWS-service) (ポート 8080) は、(理由 コード [502] でのヘルスチェック失敗) または [リクエストタイムアウト] のため、(target-grouparn:uxyztargetgroup/aws-targetgroup/123456789) で異常です
  • (サービス AWS-Service) (ポート 8080) は、(理由 ヘルスチェック失敗) のため、target-group tf-20190411170 で異常です

次のトラブルシューティング手順をお試しください。

  • コンテナがポート 80 にマップされている場合は、コンテナセキュリティグループでロードバランサーのポート 80 でのインバウンドトラフィックが許可されていることを確認します。
  • ロードバランサーの正常性の ping ポート値が正しく設定されていることを確認します。このポートが正しく設定されていない場合、ロードバランサーは、コンテナを自身から登録解除することがあります。
  • ヘルスチェックの最低猶予期間を定義します。これは、タスクがインスタンス化されてから事前に定義された期間は Elastic Load Balancing ヘルスチェックを無視するようにサービススケジューラに指示します。
  • サービスの CPU およびメモリのメトリクスをモニタリングします。例えば、CPU が高いと、アプリケーションが応答しなくなり、502 エラーが発生する可能性があります。
  • アプリケーションログでアプリケーションエラーを確認します。
  • ping ポートとヘルスチェックパスが正しく設定されているかどうかを確認します。
  • バックエンドデータベースが正常に接続されていることを確認します。これは、アプリケーションが Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで Amazon Elastic Container Service (Amazon ECS) によって起動された一連のタスクとして実行されていることを想定しています。また、アプリケーションが Amazon Relational Database Service (Amazon RDS) データベースと通信できないことも想定しています。

504 エラーのトラブルシューティング

504 エラーは、次のいずれかの理由により表示されます。

  • ロードバランサーが、接続のタイムアウト時間 (10 秒間) 以内に、ターゲットとの接続を確立できませんでした。
  • ロードバランサーはターゲットとの接続を確立していますが、ターゲットから、アイドル状態のタイムアウト時間以内に応答が返されませんでした。
  • サブネット用のアクセスコントロールリストは、一時的ポート (1024-65535) におけるターゲットからロードバランサーノードへの接続を許可しませんでした

次のような 504 エラーが表示された場合:

  • (サービス AWS-Service) (ポート 8080) は、(理由 コード [504] でのヘルスチェック失敗) のため、target-group で異常です

次のトラブルシューティング手順をお試しください。

  • 遅滞なく、バックエンドからの正常な応答があることを確認します。
  • 応答タイムアウト値を正しく設定してください。
    注: 応答タイムアウトとは、コンテナがヘルスチェック ping に応答を返すまでの時間です。この値が応答に必要な時間よりも小さい場合、ヘルスチェックは失敗します。
  • エラーの詳細については、ロードバランサーのアクセスログをご確認ください。

失敗したコンテナのヘルスチェックのトラブルシューティング

次のエラーが表示される場合、サービスはロードバランサーと統合されていませんが、タスクのコンテナは、サービスがパスできないヘルスチェックを使用しています。

  • (サービス AWS-Service) (タスク ff3e71a4-d7e5-428b-9232-2345657889) は、コンテナヘルスチェックに失敗しました

以下のステップでトラブルシューティングを試します。

  • コンテナにパスするコマンドが正しく、構文が正しいことを確認します。
  • タスクがしばらく実行されている場合は、アプリケーションログと Amazon CloudWatch Logs を確認してください。

注: Fargate は AWS によって管理されているため、基盤となるホストにアクセスできません。さらにトラブルシューティングを行うには、Amazon EC2 で Amazon ECS タスクを起動します。その後、SSH を使用して EC2 インスタンスに接続します。