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

所要時間1分
0

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

解決策

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

次のエラーのいずれかが表示される場合:

  • 「(サービス AWS-service) (ポート 8080) は、(理由 コード [502] でのヘルスチェック失敗) または [リクエストタイムアウト] のため、(target-group arn:aws: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 ログを確認します。

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


関連情報

Service definition parameters

詳細コンテナ定義パラメータ

アクセスログの作成の有効化

Application Load Balancer のトラブルシューティング

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ