Configure o HAProxy no Linux para aceitar conexões simultâneas de 10K

2

Eu tenho o HAProxy 1.5 rodando no Ubuntu 14.04 (modificado). Aceita conexões em portas http e https. Dois aplicativos de back-end processam solicitações usando conexão persistente.

Quando eu crio cerca de 2200 conexões de clientes, o haproxy pára de aceitar conexões adicionais. Mas eu quero que este sistema aceite pelo menos 10K conexões simultâneas.

Aqui estão estatísticas de conexão:

# ss -s
TCP:   4119 (estab 4098, closed 6, orphaned 0, synrecv 0, timewait 6/0), ports 0

Transport Total     IP        IPv6
TCP       4113      4106      7
INET      4128      4117      11

Já ajustei o número máximo de arquivos abertos para o processo:

# cat /proc/1012/limits
Limit                     Soft Limit           Hard Limit           Units
Max open files            240017               240017               files

Meu arquivo haproxy.config:

global
    log /dev/log syslog debug
    daemon
    user haproxy
    group haproxy
    maxconn 120000
    spread-checks 4

defaults
    log global
    timeout connect 30000ms
    timeout client 300000ms
    timeout server 300000ms

frontend http-in
    mode http
    bind :80
    option httplog
    option forwardfor
    reqadd X-Forwarded-Proto:\ http
    default_backend http-routers

frontend https-in
    mode http
    bind :443 ssl crt /opt/haproxy/cert.pem no-sslv3
    option httplog
    option forwardfor
    option http-server-close
    reqadd X-Forwarded-Proto:\ https
    default_backend http-routers

frontend ssl-in
    mode tcp
    bind :4443 ssl crt /opt/haproxy/cert.pem no-sslv3
    default_backend tcp-routers

backend http-routers
    mode http
    balance roundrobin
        server node0 192.168.10.2:80 check inter 1000
        server node1 192.168.10.2:80 check inter 1000

backend tcp-routers
    mode tcp
    balance roundrobin
        server node0 192.168.10.2:80 check inter 1000
        server node1 192.168.10.2:80 check inter 1000
    
por lexsys 18.02.2015 / 15:16

2 respostas

2

Até onde eu sei, listen block maxconn é diferente de maxconn global. Com maxconn global você limita o número máximo de conexões que você permite que o processo haproxy trate.

A seção Listen / frontend possui seu próprio maxconn, que limita o número de conexões por ouvinte. Então, tente configurar o maxconn em suas seções front-end também, ou pelo menos configure-o na seção padrão.

Então:

 defaults
     maxconn 10000

ou configurá-lo por frontend.

    
por 18.02.2015 / 16:59
0

Qual é a configuração de hardware da sua máquina HAProxy? Núcleos, RAM, interfaces de rede, etc?

Já nos deparamos com muitos problemas de desempenho do HAProxy. Aqui estão algumas ideias:

  1. Divida o tráfego em dois servidores HAProxy, cada um agindo como um backup para o outro.

  2. Eleve nbproc para refletir o número de núcleos em seu hardware específico .

  3. Se você estiver usando o modo de camada 7, veja se pode passar para o modo de camada 4 para obter mais taxa de transferência.

por 18.02.2015 / 16:55