HAProxy 和 Golang Fiber 執行個體的執行狀況檢查失敗和 502 錯誤

HAProxy 和 Golang Fiber 執行個體的執行狀況檢查失敗和 502 錯誤

我的設定是,伺服器 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

觀察結果:

  1. 所有伺服器未通過運行狀況檢查的次數都超過預期。
  2. HAProxy 經常回傳 502 錯誤,如伺服器 A 的日誌所示

問題:

  1. 在此設定中觀察到的頻繁運轉狀況檢查失敗和 502 錯誤是否符合預期?
  2. 是否有方法可以排除故障並確定健康檢查失敗的根本原因?
  3. 可以進行哪些調整或微調來提高健康檢查的可靠性並減少 502 錯誤?
  4. 作為伺服器設定配置的新手,我應該考慮哪些最佳實踐或其他檢查?

任何有關解決此問題的見解或指導將不勝感激。我還準備提供有關我的設置的更多詳細信息,以提供幫助。謝謝你!

相關內容