Verificações de saúde do HAProxy para um proxy de encaminhamento Squid
Construa uma verificação de saúde do HAProxy que fale com um proxy de encaminhamento e distinga a acessibilidade do listener, a aceitação de CONNECT e a obtenção na origem.
Um ficheiro chamado /check.txt num host de proxy parece um alvo de saúde óbvio. A armadilha é que o listener de encaminhamento explícito do Squid não é um site normal que serve a raiz de documentos desse host.
Um pedido ao estilo de origem como HEAD /check.txt HTTP/1.1 omite o alvo absoluto esperado para um pedido HTTP comum através de um proxy de encaminhamento. Conforme a configuração, pode ser rejeitado ou tratado por outro serviço local. Qualquer dos resultados pode dizer-lhe menos do que o painel sugere.
Escolha o serviço que precisa de manter disponível
| Verificação | Prova útil |
|---|---|
| Ligação TCP ao listener do proxy | Um processo alcançável aceita essa ligação. |
| CONNECT para um alvo controlado | O proxy aceita esse pedido de túnel. |
| Obtenção HTTP através do proxy | O caminho de pedido escolhido pode devolver uma resposta esperada. |
No terceiro caso, o pedido precisa de um alvo, por exemplo:
HEAD http://probe.example.internal/proxy-ready HTTP/1.1
Host: probe.example.internal
O nome do host é apenas ilustrativo. Use um endpoint controlado que o proxy consiga resolver e ao qual tenha acesso deliberadamente permitido. http-check send do HAProxy permite escolher método, URI, versão e cabeçalhos; configure esse pedido explicitamente em vez de herdar sem alterações um exemplo de servidor de origem.
O HEAD pode verificar o estado e os cabeçalhos de uma resposta. Não consegue validar um corpo de resposta que nunca é transferido. Se o contrato de saúde exigir um marcador no corpo, escolha uma verificação GET adequada e valide esse marcador.
Mantenha a conta de verificação e as restrições de origem estreitas quando há autenticação de proxy. Isentar todo o listener de autenticação para obter uma marca verde altera o serviço que está a ser protegido.
Por fim, decida o que uma verificação falhada deve remover. Uma falha controlada na origem pode fazer falhar ao mesmo tempo a verificação de encaminhamento de todos os proxies. Pode ser exatamente a dependência que quer medir, ou um motivo para manter a saúde do listener e a disponibilidade ponta a ponta como sinais separados.