A passagem haproxy TCP simples resulta em velocidade de transferência de rede muito lenta

A passagem haproxy TCP simples resulta em velocidade de transferência de rede muito lenta

Eu configurei uma instância simples do haproxy em uma instalação limpa do Debian 10 Buster. Adicionei algumas configurações simples e necessárias para ativar a passagem para o endereço IP em questão (que foi redigido na configuração abaixo).

O arquivo de configuração:

global
    log /dev/log    local0
    log /dev/log    local1 notice

    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    # An alternative list with additional directives can be obtained from
    #  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    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 myfrontend
  bind *:80
  mode tcp
  default_backend mybackendhttp

frontend myfrontendhttps
  bind *:443
  mode tcp
  use_backend mybackendhttps

backend mybackendhttp
  mode tcp
  option ssl-hello-chk
  server server1 ***********:80

backend mybackendhttps
  mode tcp
  option ssl-hello-chk
  server server1 ************:443

As alterações que fiz (se fizer uma comparação com o arquivo original) (ip redigido):

+
+
+frontend myfrontend
+  bind *:80
+  mode tcp
+  default_backend mybackendhttp
+
+frontend myfrontendhttps
+  bind *:443
+  mode tcp
+  use_backend mybackendhttps
+
+backend mybackendhttp
+  mode tcp
+  option ssl-hello-chk
+  server server1 ***********:80
+
+backend mybackendhttps
+  mode tcp
+  option ssl-hello-chk
+  server server1 **********:443

Tudo funciona corretamente, mas por algum motivo o desempenho da rede é incrivelmente lento ao fazer uma solicitação do navegador do meu PC, solicitação curl via linha de comando ou celular, estou obtendo cerca de 200-300kb/s quando normalmente estaria em torno de 10x que.

Se eu tentar a mesma solicitação via curl em um VPS, obtenho uma velocidade muito maior (5000kb/s).

O haproxy está sendo executado em uma VM de instância de computação do GCP, então duvido que seja um problema de largura de banda de rede, mas posso tentar configurar um serviço http estático simples e ver como isso se compara.

Qual pode ser a causa do problema? Como eu poderia diagnosticar isso? A ativação de logs no haproxy forneceria uma visão melhor sobre esse problema?

Me deparei com a seguinte pergunta que também parece descrever um comportamento semelhante:

Respostas HAProxy SSL muito lentas

a biblioteca OpenSSL precisa ter o nome do host configurado corretamente em /etc/hosts

No entanto, não está claro para mim o que significa "configurado corretamente".

Responder1

Respondendo porque não tenho representante suficiente.

Em /etc/hosts, você deseja encontrar esta linha:

127.0.0.1 localhost

Substitua localhostpelo seu FQDN, como haproxy.domain.com ou o que quer que seja. Deve ser igual ao nome do host do seu servidor.

No Debian, você pode definir o nome do host com este comando:

hostname-ctl set-hostname haproxy.domain.com

informação relacionada