簡體   English   中英

AWS 負載均衡器 502

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM