HAProxy com a mesma solicitação às vezes respondendo com NOSRV enquanto o back-end está ativo

HAProxy com a mesma solicitação às vezes respondendo com NOSRV enquanto o back-end está ativo

Estou fazendo a mesma solicitação (POST/user/oauth) para o haproxy, mas às vezes recebo 503, enviar solicitações diretamente para o backend sempre funciona

aqui estão os registros:

  1. servidor_local~ app/s2 0/0/0/100/100 200 813 - - --VN 1/1/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"
  2. servidor_local~ app/s1 0/0/1/107/108 200 820 - - --NI 1/1/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"
  3. servidor_local~ app/NOSRV 0/-1/-1/-1/0 503 216 - - SCNN 1/1/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"
  4. servidor_local~ app/NOSRV 0/-1/-1/-1/0 503 216 - - SCNN 1/1/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"
  5. servidor_local~ app/s2 0/0/1/106/107 200 831 - - --NI 2/2/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"
  6. servidor_local~ app/s1 0/0/1/3/6206 101 337 - - --NI 3/3/1/1/0 0/0 "GET / HTTP/1.1"
  7. servidor_local ~ app/s1 0/0/1/83/84 200 258 - - --VN 2/2/0/0/0 0/0 "POST /transaction/concludeTransaction HTTP/1.1"
  8. servidor_local~ app/NOSRV 0/-1/-1/-1/0 503 216 - - SCNN 1/1/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"
  9. servidor_local~ app/s2 0/0/1/107/108 200 831 - - --NI 1/1/0/0/0 0/0 "POST /usuário/oauth HTTP/1.1"

como você pode ver o POST /user/oauth às vezes vai para s1, às vezes vai para s2 e às vezes para NOSRV.

às vezes passa 10 vezes seguidas e às vezes falha 10 vezes seguidas.

aqui está minha configuração:

defaults
log     global
mode    http
option  httplog
option  dontlognull
timeout connect 10000
timeout client  50000
timeout server  50000
retries 3
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

frontend local_server
bind *:8080 ssl crt /etc/letsencrypt/live/xxx/sslcert.pem
mode http
default_backend app

backend app
balance roundrobin
cookie SERVERID insert indirect nocache
http-send-name-header Host
server s1 172.26.13.134:3000 check cookie s1
server s2 172.26.13.134:3000 check cookie s2
http-request add-header X-Server %b

Editar:

redirecionei a solicitação para um servidor python rápido em execução no host local e ainda assim o problema persiste. então editei o arquivo de configuração haproxy para que apenas o servidor s1 127.0.0.1:8086 verifique o cookie s1

e execute o script python: python3 -m http.server 8086 --bind 127.0.0.1&

quando acertei no carteiro, obtive cerca de 3 sucessos consecutivos do que um 503.

Responder1

Acredito que o problema esteja dentro da versão, li em algum lugar que a versão 1.9 funciona melhor que a 2.* baixei o código fonte e compilei com as seguintes opções make TARGET=linux-glibc USE_PCRE2=1 USE_PCRE2_JIT=1 USE_OPENSSL=1 USE_ZLIB=1 USE_REGPARAM=1 USE_SYSTEMD=1 USE_THREAD=1

como você pode ver, omiti propositalmente a opção lua5, que é a única diferença daquela que você obtém no apt-get install.

o binay resultante funciona muito bem sem nenhum problema

informação relacionada