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 のトラブルシューティング