如果服务器在健康检查发生之前closures,HAProxy会返回错误

假设我在后台服务器列表中有web01 ,并且web01closures。 HAProxy需要几秒钟才能注意到服务器已closures(取决于运行状况检查间隔以及超时时间),并将其停止旋转。 如果在发生此请求之前 ,客户端将最终收到503 Service Unavailable错误。

我想要发生的事情是让HAProxy在另一台服务器上自动重新尝试同样的请求。 我意识到这个请求最终会变得非常慢,但最终会导致成功而不是错误。

有没有办法configurationHAProxy重试在另一台服务器上的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 。 这会导致请求无法在其他服务器上重试。