Verificação de integridade do HAProxy para um único back-end

3

Eu tenho uma configuração HAProxy com um único backend muito parecido com isso:

backend mybackend
option httpchk get /ping
http-check expect ! rstatus ^5
server mybackend-0 192.168.1.1:9041 weight 1

O ponto de extremidade /ping sempre retorna 200 .

Minha pergunta: Existe alguma vantagem em fazer uma verificação de integridade em um único servidor? Pelo que entendi, a verificação de integridade só faz sentido quando temos vários servidores de back-end e você deseja fazer o balanceamento de carga deles.

Qualquer ajuda nesse sentido será apreciada.

Obrigado

    
por Zeeshan 16.12.2016 / 15:12

1 resposta

3

Faz sentido verificar com integridade um único servidor para permitir um cenário de 'disjuntor'. Imagine que seu backend está aceitando conexões TCP, mas não consegue gerar uma resposta. Os aplicativos clientes que se conectam por meio desse haproxy terão que esperar até que ocorra o tempo limite embutido para fechar a conexão. Se eles geralmente esperam um tempo de resposta de 50 ms e agora precisam aguardar 3 segundos para que o tempo limite de solicitação expire, é mais provável que eles falhem.

Um aplicativo cliente muito bem escrito detecta essa situação e realiza seu próprio circuito, mas, na minha experiência, a maioria dos aplicativos não. Adicionar a verificação de integridade ao HAProxy permite que o circuito HAProxy seja interrompido em seu nome.

Portanto, o back-end não pode gerar uma resposta e faz com que a verificação de integridade falhe. O HAProxy então responde imediatamente a qualquer solicitação recebida com um 503 bem formado, e o aplicativo cliente pode lidar com isso da maneira que ele quiser.

Muitas das aplicações de tempo são escritas assumindo que os backends respondem rapidamente com sucesso ou falha. Com o HAProxy, as verificações de integridade atenuam alguns dos cenários em que o aplicativo não manipula uma não resposta.

    
por 16.12.2016 / 17:10