
我的設定是,伺服器 A 充當客戶端,透過 HAProxy 與伺服器 B 進行通訊。伺服器 B 運行四個類似的 Golang Fiber 實例,每個執行個體都在 EC2 t3xlarge 執行個體上啟用了 Prefork。伺服器 B 每秒處理數千個請求。但是,我注意到運行狀況檢查存在問題,並且 HAProxy 返回了 502 錯誤,這可能表明運行狀況檢查失敗。
前端配置:
frontend apifront
bind *:9898
maxconn 50000
mode http
log global
default_backend apiserver
後端配置:
backend apiserver
mode http
option http-keep-alive
timeout connect 5s
timeout server 30s
timeout queue 60s
timeout check 5s
timeout http-request 10s
timeout http-keep-alive 10s
http-reuse safe
log global
option httpchk GET /health
balance roundrobin
server apiserver1 localhost:9881 check
server apiserver2 localhost:9882 check
server apiserver3 localhost:9883 check
server apiserver4 localhost:9884 check
觀察結果:
- 所有伺服器未通過運行狀況檢查的次數都超過預期。
- HAProxy 經常回傳 502 錯誤,如伺服器 A 的日誌所示
問題:
- 在此設定中觀察到的頻繁運轉狀況檢查失敗和 502 錯誤是否符合預期?
- 是否有方法可以排除故障並確定健康檢查失敗的根本原因?
- 可以進行哪些調整或微調來提高健康檢查的可靠性並減少 502 錯誤?
- 作為伺服器設定配置的新手,我應該考慮哪些最佳實踐或其他檢查?
任何有關解決此問題的見解或指導將不勝感激。我還準備提供有關我的設置的更多詳細信息,以提供幫助。謝謝你!