Назад | Перейти на главную страницу

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. Это приводит к тому, что запрос не может быть повторен на другом сервере.