Como configurar a verificação HTTP para o backend TCP no HAProxy?

1

A documentação sugere que eu possa configurar uma verificação HTTP para um backend TCP.

A vivacidade do meu back-end é determinada por uma 405 Method Not allowed de resposta ao atingir a-app.com/ap_service

Minha configuração é assim:

frontend app-api
    bind *:443
    mode tcp

    option tcplog
    default_backend app-api_backend


backend app-api_backend
    mode tcp
    option httpchk GET /app_service HTTP/1.1
    http-check expect status 405
    server a a-app.com:443  resolvers dns verify none inter 1000  check
    server b b-app.com:443  resolvers dns verify none inter 1000  check

No entanto, nos logs, obtenho:

Server app-api_backend/a is DOWN, reason: Layer7 invalid response, check duration: 1ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
Server app-api_backend/b is DOWN, reason: Layer7 invalid response, check duration: 1ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
...
    
por kaizenCoder 17.05.2018 / 08:40

1 resposta

0

Acho que o seu problema é que você espera que o haproxy faça solicitações HTTPS supondo que a porta 443 seja exibida, enquanto option httpchk faz apenas solicitações HTTP simples.

Sirva seu aplicativo em HTTP simples em uma porta diferente, além de HTTPS, disponibilize-o para o nó haproxy e use o HTTP para as verificações.

Veja o exemplo na opção haproxy httpchk docs:

    # Relay HTTPS traffic to Apache instance and check service availability
    # using HTTP request "OPTIONS * HTTP/1.1" on port 80.
    backend https_relay
        mode tcp
        option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
        server apache1 192.168.1.1:443 check port 80

No seu caso, seria algo assim:

    backend app-api_backend
        mode tcp
        option httpchk GET /app_service HTTP/1.1
        http-check expect status 405
        server a a-app.com:443  resolvers dns verify none inter 1000 check port 80
        server b b-app.com:443  resolvers dns verify none inter 1000 check port 80
    
por 24.09.2018 / 17:12

Tags