Reiniciando o Haproxy Graciosamente

5

De acordo com vários blogs, o HAproxy pode ser reinicializado usando o seguinte comando:

sudo haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $ (cat /var/run/haproxy.pid)

Para verificar isso, eu configurei um script de banco de dados apache que contiguamente enviava mensagem para haproxy. Idealmente, sempre que eu reiniciei meu servidor, o script não deveria afetar a execução do grupo apache. Mas, parece que sempre que o Haproxy é reiniciado, os scripts do banco apache terminam e a conexão com o balanceador de carga é perdida.

Aqui estão os detalhes do meu arquivo de configuração do HaProxy:

global
    nbproc 4
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096
    #chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    pidfile /var/run/haproxy.pid
    stats socket /home/ubuntu/haproxy.sock
    #debug
    #quiet

    defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 2000
    contimeout      5000
    clitimeout      50000
    srvtimeout      50000

    listen webstats
    bind 0.0.0.0:1000
    stats enable
    mode http
    stats uri /lb?stats
    stats auth anand:aaaaaaaa
    #stats refresh

    listen web-farm 0.0.0.0:80
         mode http
         balance roundrobin
         option httpchk HEAD /index.php HTTP/1.0
         server server2.com  1.1.1.1:80
         server serve1.com  1.1.1.2:80

~
Por favor, deixe-me saber o que estou perdendo aqui.

    
por AKG 13.11.2011 / 09:29

1 resposta

3

Durante a solução de problemas, tente usar "nbproc 1" em vez de "nbproc 4", o que aumenta o número de processos raramente necessários e pode levar a problemas em certos casos.

No entanto, esse provavelmente não é o principal problema. O cenário que você descreve deve funcionar de acordo com o esperado.

A reconfiguração ativa do HAProxy funciona assim:

  1. Um novo processo é iniciado com a configuração especificada
  2. O processo antigo recebe um sinal SIGTTOU para que o novo processo possa assumir a (s) porta (s)
  3. O processo antigo conclui seu trabalho atual e, em seguida, sai
  4. O novo processo processa o tráfego pela (s) porta (s)

Se algo der errado depois de 2, o processo antigo recebe um sinal SIGTTIN e continua como antes.

Alguns detalhes adicionais na sua pergunta podem facilitar a resolução deste problema:

  • Quais parâmetros você usa com ab
  • Após uma reconfiguração a quente, você pode se conectar ao novo processo com outros clientes ou não
  • Qual (principal) versão do HAProxy você está usando
por 16.12.2011 / 10:22