Load-Balancing
如果伺服器在執行狀況檢查發生之前停機,HAProxy 將返回錯誤
假設我
web01
在我的後端伺服器列表中,並且web01
出現故障。HAProxy 需要幾秒鐘才能注意到伺服器已關閉(取決於執行狀況檢查間隔和超時時間)並將其停止輪換。如果在此之前收到請求,客戶端將最終收到503 Service Unavailable
錯誤消息。我想要發生的是讓 HAProxy 在另一台伺服器上自動重試相同的請求。我意識到請求最終會非常慢,但最終會導致成功而不是錯誤。
有沒有辦法配置 HAProxy 在另一台伺服器上重試 HTTP 請求而不是出錯?理想情況下,如果集群中有任何工作伺服器,我不希望客戶端收到錯誤。
這是我的 haproxy.cfg:
global maxconn 4096 debug defaults mode http contimeout 5000 clitimeout 50000 srvtimeout 50000 frontend http-in bind *:80 acl service1 path_reg ^/service1/ acl service2 path_reg ^/service2/ use_backend service1 if service1 use_backend service2 if service2 backend service1 server web01 127.0.0.1:85 check server web02 127.0.0.1:86 check reqrep ^([^\ :]*)\ /service1/(.*) \1\ /\2 backend service2 server web03 127.0.0.1:87 check server web04 127.0.0.1:88 check reqrep ^([^\ :]*)\ /service2/(.*) \1\ /\2
你想要
option redispatch
。這會導致無法在另一台伺服器上重試請求。