[英]AWS Load Balancer 502
我在 EC2 實例上運行微服務(使用不同的編程語言)。 在生產中,當這些服務嘗試相互交互時,我注意到一些 502 Bad Gateway Errors。 同樣在請求的服務的日志中,它沒有顯示任何 api 調用正在被命中
示例服務 A 調用服務 B,但在服務 B 日志中沒有任何內容表明呼叫來自服務 A。
可能是 AWS 負載均衡器問題嗎? 任何幫助,將不勝感激。 提前致謝。
嘗試的解決方案:我們嘗試在每個服務中創建 http/https 連接代理,但仍然出現此問題。
更新:在 lb 日志中,api 已記錄,但目標響應代碼顯示“-”,而 lb 響應代碼顯示 502 或 504。這是否意味着 lb 無法處理流量或我的應用程序?
還有可能的解決方案是什么?
我們遇到了同樣的問題。
在我們的設置中,AWS 應用程序 ELB 的目標組包含 4 個 EC2 實例。 在每個 EC2 實例上,都有一個轉發到 Tomcat 的 Apache2。
ELB 的默認連接 KeepAlive 為 60 秒。 Apache2 的默認連接 KeepAlive 為 5 秒。 如果 5 秒結束,Apache2 將關閉其連接並重置與 ELB 的連接。 然而,如果一個請求恰好在正確的時間到來,ELB 將接受它,決定將它轉發到哪個主機,並且在那一刻,Apache 關閉連接。 這將導致上述 502 錯誤代碼。
解決方案是:當你有級聯代理/LB 時,要么對齊它們的 KeepAlive 超時,或者 - 最好 - 甚至讓它們越長越長。
我們將 ELB 超時設置為 60 秒,將 Apache2 超時設置為 120 秒。 問題沒了。
健康檢查使用 HTTP2。 通過將http2
添加到 listen 80,我使運行 NGINX 的 EC2 實例運行良好。
listen 80 default_server http2;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.