如果服务器在运行状况检查之前发生故障,HAProxy 会返回错误

Mik*_*sen 5 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
Run Code Online (Sandbox Code Playgroud)

lon*_*eck 6

你要option redispatch。这会导致无法在另一台服务器上重试请求。