阿里雲負載均衡踩坑記錄
問題
最近在部署一個測試項目時,遇到了一個這樣的怪事,就是我后端運行的是 Tomcat
,然后我在阿里雲的負載均衡上面添加了一個 HTTP 層 代理,並且是走的默認配置,最后進行訪問頁面顯示的是 502。
但是我如果我是配置一個 tcp
層的監聽后,發現訪問這樣是可以正常訪問的。這就給我很大疑惑了,是我后端 Tomcat 的問題(因為我 Tomcat 最近調優了),還是 阿里雲的負載均衡的問題呢。
問題緣由
經過排查。
問題的原因是: 阿里雲的負載均衡在 HTTP和HTTPS
默認開啟了健康檢查,如果健康檢查沒有通過的話,后端對應的服務器是接收不到請求的。但是我們這里是沒有對健康檢查進行詳細配置,所以默認健康檢查一直失敗的。請求也一直到達不了后端。但是阿里雲的負載均衡在 TCP 和UDP
默認是沒有開啟健康檢查,所以是可以進行訪問的。
問題解決辦法
-
關閉健康檢查
將健康檢查功能關閉。
-
設置健康檢查路徑
找到我們我們網站可以正常訪問的而且不會經常改變的一個路徑,然后將它配置在健康檢查路徑里。健康狀態檢查就不會出錯了。
-
設置狀態碼
默認的訪問路徑是
/
,但是,訪問這個路徑是沒有任何數據返回的,所以會報 400 錯誤,我們可以在健康檢查的高級配置中,將正常狀態碼中的http_4xx
勾選為 正常狀態碼。(不建議使用)