HAProxy ainda retorna 502 após 120segundos

1

Eu tenho o HAProxy configurado que encaminhará meus pedidos HTTP para vários serviços em portas internas.

Um desses serviços pode levar alguns minutos para elaborar uma resposta, mas após 120 anos o HAProxy ainda retornará um erro 502 Bad Gateway .

Eu tentei definir tempos limite mais altos sem sucesso. Aqui está o arquivo haproxy.cfg

global
    daemon
    maxconn 4096
    log 127.0.0.1 local0
defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    option forwardfor
    option http-server-close
    log global

frontend http-in
    bind *:80
    option tcplog
    default_backend my_default_backend
    timeout client 10m
    timeout server 10m

    acl is_test_request hdr(host) -i testrequest.mydomain.ext
    use_backend test_timeout if is_test_request

backend test_timeout
    timeout connect 10s
    timeout server 10m
    server s1 127.0.0.1:8099

listen admin
    bind *:8080
    stats enable

Sim, existem diretivas timeout repetidas, esse é o arquivo depois de alguns testes que fiz.

Existem também outros acl e use_backend , mas eu os recortei.

Como posso definir um tempo limite maior para esse serviço?

Atualização:

Esta é uma linha de registro de amostra

May 22 07:25:52 localhost haproxy[2552]: CLIENT_IP_REDACTED:PORT [22/May/2018:07:23:52.402] http-in test_timeout/s1 0/0/120004 204 SH 0/0/0/0/0 0/0

o serviço escutando na porta 8099 estava esperando 180 segundos para enviar uma resposta, mas depois de 120 haproxy enviou de volta um

502 Bad Gateway

The server returned an invalid or incomplete response.
    
por Leonardo Rossi 22.05.2018 / 09:42

1 resposta

1

O SH em sua entrada de log informa a história. Este campo é chamado de Estado da Sessão na Desconexão e é tremendamente valioso. O que você registrou sugere que você precisa examinar mais de perto a configuração e o comportamento do servidor da web. O próprio servidor da Web parece estar fechando a conexão enquanto o HAProxy está aguardando a resposta.

Veja como cheguei a essa conclusão:

S: the TCP session was unexpectedly aborted by the server, or the server explicitly refused it.

Sabemos que o servidor não recusou a conexão, por isso assumimos que o servidor a fechou e olhou para o segundo valor.

H: the proxy was waiting for complete, valid response HEADERS from the server (HTTP only).

Portanto, antes de o proxy receber o \r\n\r\n após um conjunto de cabeçalhos de resposta HTTP válidos, o servidor da Web fechou a conexão inesperadamente.

link

    
por 23.05.2018 / 15:37

Tags