Load-Balancing

如果伺服器在執行狀況檢查發生之前停機,HAProxy 將返回錯誤

  • December 21, 2017

假設我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。這會導致無法在另一台伺服器上重試請求。

引用自:https://serverfault.com/questions/588454