HAProxy retorna erro se o servidor cair antes que a verificação de integridade tenha ocorrido

4

Digamos que eu tenha web01 na minha lista de servidores de back-end e web01 fique inativo. Levará alguns segundos para que o HAProxy perceba que o servidor está inativo (dependendo do intervalo de verificação de integridade e de quanto tempo o tempo limite está esgotado) e o removerá da rotação. Se uma solicitação chegar em antes que aconteceu, o cliente acabará recebendo um erro 503 Service Unavailable .

O que eu gostaria que acontecesse é que o HAProxy automaticamente repita esse mesmo pedido novamente em outro servidor. Percebo que o pedido acabaria sendo muito lento, mas acabaria resultando em um sucesso, em vez de um erro.

Existe uma maneira de configurar o HAProxy para repetir a solicitação HTTP em outro servidor, em vez de cometer erros? Idealmente, eu nunca quero que um cliente receba um erro se houver algum servidor em funcionamento no cluster.

Aqui está o meu 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/(.*)     \ /

backend service2
        server web03 127.0.0.1:87 check
        server web04 127.0.0.1:88 check
        reqrep ^([^\ :]*)\ /service2/(.*)     \ /
    
por Mike Christensen 11.04.2014 / 20:21

1 resposta

5

Você deseja option redispatch . Isso faz com que uma solicitação não seja repetida em outro servidor.

    
por 11.04.2014 / 20:25