EC2インスタンスで実行されているマイクロサービス(さまざまなプログラミング言語)があります。本番環境で、これらのサービスが相互にやり取りしようとすると、いくつかの502 Bad Gateway Errorが発生します。また、要求されたサービスのログには、API呼び出しがヒットしていることは表示されません
サンプルサービスAはサービスBを呼び出しますが、サービスBログには、サービスAからの呼び出しであることを示すものは何もありません。
AWSロードバランサーの問題ですか?任意の助けいただければ幸いです。前もって感謝します。
解決策を試した:各サービスでhttp/https接続エージェントを作成しようとしましたが、それでもこの問題が発生します。
更新:lbログでは、apiはログに記録されますが、ターゲット応答コードは「-」を示しますが、lb応答コードは502または504を示します。lbがトラフィックまたはアプリケーションを処理できないことを意味しますか?
また、可能な解決策は何ですか?
同じ問題がありました。
このセットアップでは、AWSアプリケーションELBに4つのEC2インスタンスのターゲットグループがあります。各EC2インスタンスには、Tomcatに転送するApache2があります。
ELBには、60秒のデフォルト接続KeepAliveがあります。 Apache2のデフォルトの接続キープアライブは5秒です。 5秒が経過すると、Apache2は接続を閉じ、ELBとの接続をリセットします。ただし、リクエストが正確なタイミングで届いた場合、ELBはそれを受け入れ、転送先のホストを決定します。その時点で、Apacheは接続を閉じます。これは、上記の502エラーコードになります。
解決策は次のとおりです。カスケードプロキシ/ LBがある場合は、それらのキープアライブタイムアウトを調整するか、できれば、さらに下に行くほど少し長くすることもできます。
ELBタイムアウトを60秒に設定し、Apache2タイムアウトを120秒に設定しました。問題はなくなりました。