Load-Balancing
單個後端的 HAProxy 執行狀況檢查
我有一個帶有單個後端的 HAProxy 配置,與此非常相似:
backend mybackend option httpchk get /ping http-check expect ! rstatus ^5 server mybackend-0 192.168.1.1:9041 weight 1
/ping
端點總是200
返回。我的問題:在單個伺服器上進行健康檢查有什麼好處嗎?據我了解,只有當我們有多個後端伺服器並且您想要對它們進行負載平衡時,健康檢查才有意義。
在這方面的任何幫助將不勝感激。
謝謝
對單個伺服器進行健康檢查以允許“斷路器”場景是有意義的。想像一下,您的後端正在接受 TCP 連接,但無法生成響應。通過此 haproxy 連接的客戶端應用程序必須等到它們的內置超時發生才能關閉連接。如果他們通常期望 50 毫秒的響應時間,而現在必須等待 3 秒才能使他們的請求超時到期,那麼他們很可能會失敗。
一個寫得很好的客戶端應用程序會檢測到這種情況並執行自己的熔斷,但根據我的經驗,大多數應用程序都不會。將執行狀況檢查添加到 HAProxy 可以讓 HAProxy 代表它們進行斷路。
因此,後端無法生成響應並導致執行狀況檢查失敗。HAProxy 然後立即使用格式正確的 503 響應任何傳入請求,然後客戶端應用程序可以隨意處理它。
很多時候,應用程序是在假設後端快速回復成功或失敗的情況下編寫的。讓 HAProxy 進行健康檢查可以緩解一些應用程序無法處理無響應的情況。