haproxy não inicia

20

Instalei um novo servidor Ubuntu 10.04 e, como root, instalei o haproxy usando o apt-get.

Posso executar haproxy diretamente como um daemon, mas quando não faço /etc/init.d/haproxy startnada acontece .. nem mesmo uma mensagem de erro.

netstat -a mostra que nada está usando a porta http que estou tentando equilibrar com haproxy ...

Idéias?

Editar

  1. Notei que apt-get install haproxydiz isso no final:

    update-rc.d: aviso: /etc/init.d/haproxy informações ausentes do LSB update-rc.d: consulte http://wiki.debian.org/LSBInitScripts

  2. /etc/default/haproxy diz ENABLED=1

Saída de depuração para sh -xv /etc/init.d/haproxy start

#!/bin/sh
#
# chkconfig: - 85 15
# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \
#              for high availability environments.
# processname: haproxy
# config: /etc/haproxy.cfg
# pidfile: /var/run/haproxy.pid

# Source function library.
if [ -f /etc/init.d/functions ]; then
  . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
  . /etc/rc.d/init.d/functions
else
  exit 0
fi
+ [ -f /etc/init.d/functions ]
+ [ -f /etc/rc.d/init.d/functions ]
+ exit 0
root@li267-63:~#
Assaf Lavie
fonte
Você pode tentar depurar o script de início com: sh -xv /etc/init.d/haproxy start
João Pinto

Respostas:

39

Edite /etc/default/haproxye verifique se há uma linha que diz ENABLED=1isso.

O padrão é ENABLED = 0. Isso é feito porque o haproxy não possui uma configuração padrão sã; portanto, é necessário primeiro configurá-lo e ativá-lo.

SpamapS
fonte
Eu defini HABILITADO = 1, ainda nada .. #
3111 Assaf Lavie
Assaf, você ainda precisa configurar o haproxy. Se o arquivo de configuração não estiver correto, ele não será iniciado e provavelmente imprimiu erros nos logs do sistema (verifique /var/log/daemon.log e / var / log / syslog)
SpamapS
2
Por que não inicia sem nenhuma mensagem detalhada? É realmente confuso!
Nikolay Fominyh
11
@NikolayFominyh Eu concordo, isso é confuso! Acabo encontrando esse encadeamento repetidamente, pois a cada 8 meses, mais ou menos, tenho que configurar um novo haproxy e sempre esqueço o requisito de habilitar serviços em / etc / default / *. Desejo que algo apareça no syslog quando você tenta iniciar um serviço desativado.
Jay Taylor
3

Eu tive o mesmo problema, em que a configuração ENABLED não teve efeito devido à falha na linha "teste". Encontrou o motivo: você precisa editar em /etc/default/haproxyvez do script init.

Justin Karneges
fonte
3

Eu sei que isso é um tópico de um ano .. mas apenas tentando compartilhar o que aprendi ..

use /etc/init.d/haproxy reload or service haproxy reloade ele será recarregado bem .. afinal, nós apenas queremos que comece corretamente;)

cikgureza
fonte
2

Eu tenho um problema similar. Eu já defini ENABLED = 1, mas a configuração padrão update-rc.d parece colocar o haproxy no K20 (rc0 | 1 | 6.d) e no S20 (rc2 | 3 | 4 | 5.d). O que significa que ele tentará iniciar antes da rede, portanto, no meu caso, recebo isso no boot.log: -

 * Iniciando o haproxy haproxy [ALERT] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
[ALERTA] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
[ALERTA] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
[ALERTA] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
[ALERTA] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
[ALERTA] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
[ALERTA] 346/160552 (927): Iniciando o haproxy do proxy: não é possível vincular o soquete
                                                                         [falhou]

alterar o número de inicialização para 35 parece corrigi-lo, mas acho que 36 seria mais seguro (o número antigo para a rede era 35, então é melhor começar depois disso). Então tente:-

Como remover update-rc.d -f haproxy
update-rc.d haproxy start 35 2 3 4 5. pare 20 0 1 6.

Em seguida, reinicie e deve classificá-lo. Os mantenedores de pacotes realmente deveriam ter pensado nisso.


fonte
SiBaz, não tenho certeza de qual versão do Ubuntu você está executando, mas no Lucid, o sistema era a questão, a rede é iniciada antes do rc-sysinit fazer a transição para o nível de execução padrão (2), que é o que executa o / etc / rc2 scripts .d.
SpamapS
Também estou usando lúcido e posso garantir que a rede não foi iniciada quando o haproxy foi iniciado via rc2.d /../init.d/ haproxy. Também notei que, o que sugeri não funcionou, então tive que adicionar a rede aos níveis de rc 2 3 4 5 para iniciar antes do haproxy, o update-rc.d networking começa 35 2 3 4 5. Percebo que é um hackear, pois a solução seria adicionar um script inicial. Eu criei um bug contra o pacote haproxy no lucid para esse efeito.
2

Corri para esse mesmo problema depois de instalar o pacote mantido pelo ubuntu e depois (depois de perceber que a versão não suportava o recurso que eu precisava). Instalar uma versão mais recente do haproxy para ppa. O script init.d que acabei apontando para / usr / sbin / haproxy quando na verdade meu executável estava em / usr / local / sbin / haproxy. a saída de depuração "sh -xv /etc/init.d/haproxy start" mencionada anteriormente tornou esse problema bastante óbvio.

grendal_prime
fonte
Eu gostaria de votar isso pelo menos duas vezes.
Balázs Németh
2

Você tentou iniciá-lo como root ou com o sudo? Se você é como eu, às vezes esquece de adicionar sudo à frente dos comandos. Eu tentei todos os seus comandos sem o sudo e eles falharam como você descreveu. No entanto, com o sudo na frente deles, usando um haproxy.cfgarquivo padrão da instalação, ele está sendo executado sem problemas. Apenas pensei em apontar que, mesmo com as configurações corretas, para mim não ficará sem o sudo.

John Doe
fonte
:) Sim, como root
Assaf Lavie
1

Acabei de encontrar o mesmo problema com o script haproxy init.d no lucid. Eu simplesmente não consegui iniciar o haproxy, então procurei e descobri que era necessário alterar a variável ENABLED no script /etc/init.d/haproxy.

Alterar essa variável, no entanto, NÃO ajudou em nada e é por isso: Algumas linhas abaixo em /etc/init.d/haproxy, a variável ENABLED é verificada pelo script com a seguinte linha: test "$ ENABLED"! = "0" || saída 0. Notei que esse teste sempre falha no meu sistema, não importa qual seja o valor de ATIVADO. Portanto, o restante do script nunca é executado.

Devo admitir que realmente não sei por que essa linha de teste não funciona corretamente. Mas como queremos que o haproxy seja ativado de qualquer maneira, por que incomodar a verificação? ... Comentar essa linha de teste fez com que funcionasse para mim.

Espero que isso ajude alguém.


fonte
Eu acho que você deveria então definir o sinalizador ativado no / etc / default / haproxy
UpTheCreek
0

Eu também ficava olhando o scipt, não conseguia ver por que ele não estava funcionando, apesar do ENABLED=1 definido no script de inicialização.

Eventualmente, depois de olhar um pouco para baixo, você verá que o /etc/default/haproxy-filecódigo é originado pouco antes da execução do teste, substituindo assim a variável de conjunto no próprio script init ...

URSS
fonte
0

Encontrei o mesmo problema no azure com uma debian vm. Acontece que é bastante simples. O script init do haproxy usa dependências de tempo de execução. No sistema anterior, update-rc.d era o caminho a seguir, mas no sistema mais recente o insserv é usado: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

Portanto, se você usou o update-rc.d para adicionar o serviço haproxy em sistemas mais recentes, faça:

$ sudo update-rc.d -f remoção de haproxy

$ sudo insserv haproxy

Olivier de Jong
fonte