haproxy no comienza


20

Instalé un nuevo servidor Ubuntu 10.04 e inicié sesión como root. Instalé haproxy usando apt-get.

Puedo ejecutar haproxy directamente como un demonio, pero cuando no hago /etc/init.d/haproxy startnada, ni siquiera un mensaje de error.

netstat -a muestra que nada está usando el puerto http que estoy tratando de equilibrar con haproxy ...

Ideas?

Editar

  1. Me di cuenta de que apt-get install haproxydice esto al final:

    update-rc.d: advertencia: /etc/init.d/haproxy falta información LSB update-rc.d: consulte http://wiki.debian.org/LSBInitScripts

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

Salida de depuración 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:~#

Puede intentar depurar el script de inicio con: sh -xv /etc/init.d/haproxy start
João Pinto

Respuestas:


39

Edite /etc/default/haproxyy asegúrese de que tenga una línea que diga ENABLED=1.

El valor predeterminado es ENABLED = 0. Esto se hace porque haproxy no tiene una configuración predeterminada sensata, por lo que primero debe configurarlo y luego habilitarlo.


Configuré ENABLED = 1, todavía nada ..
Assaf Lavie

Assaf, aún necesita configurar haproxy. Si el archivo de configuración no es correcto, no se iniciará y probablemente haya impreso errores en los registros del sistema (consulte /var/log/daemon.log y / var / log / syslog)
SpamapS

2
¿Por qué no comienza sin ningún mensaje detallado? ¡Es realmente confuso!
Nikolay Fominyh

1
@NikolayFominyh Estoy de acuerdo, ¡esto es confuso! Eventualmente encuentro este hilo una y otra vez porque cada 8 meses más o menos tengo que configurar un nuevo haproxy y siempre me olvido del requisito de habilitar los servicios en / etc / default / *. Deseo que aparezca algo en el registro del sistema cuando intente iniciar un servicio deshabilitado.
Jay Taylor

3

Tuve el mismo problema, donde establecer ENABLED no tuvo efecto debido a que la línea de "prueba" siempre fallaba. Encontró la razón: debe editar en /etc/default/haproxylugar del guión de inicio.


3

Sé que esto es un hilo de un año ... pero solo trato de compartir lo que he aprendido ...

use /etc/init.d/haproxy reload o service haproxy reloady se volverá a cargar bien ... después de todo, solo queremos que comience bien;)


2

Tengo un problema similar. Ya configuré ENABLED = 1, pero la configuración predeterminada de update-rc.d parece ser poner el haproxy en K20 (rc0 | 1 | 6.d) y en S20 (rc2 | 3 | 4 | 5.d). Lo que significa que intentará comenzar antes de la conexión en red, por lo que en mi caso obtengo esto en boot.log: -

 * Iniciando haproxy haproxy [ALERT] 346/160552 (927): Iniciando proxy haproxy: no se puede vincular el socket
[ALERTA] 346/160552 (927): Inicio del proxy haproxy: no se puede vincular el socket
[ALERTA] 346/160552 (927): Inicio del proxy haproxy: no se puede vincular el socket
[ALERTA] 346/160552 (927): Inicio del proxy haproxy: no se puede vincular el socket
[ALERTA] 346/160552 (927): Inicio del proxy haproxy: no se puede vincular el socket
[ALERTA] 346/160552 (927): Inicio del proxy haproxy: no se puede vincular el socket
[ALERTA] 346/160552 (927): Inicio del proxy haproxy: no se puede vincular el socket
                                                                         [fallar]

cambiar el número de inicio a 35 parece solucionarlo, pero creo que 36 sería más seguro (el número anterior para la creación de redes era 35, por lo que es mejor que comience después de eso). Entonces intente:

update-rc.d -f haproxy remove
update-rc.d haproxy start 35 2 3 4 5. parada 20 0 1 6.

Luego reinicie, y debería ordenarlo. Los mantenedores de paquetes realmente deberían haber pensado en esto.


SiBaz, no estoy seguro de qué versión de Ubuntu está ejecutando, pero en Lucid, el sistema sobre el que se trataba la cuestión es que la conexión en red comienza por el arranque antes de que rc-sysinit pase al nivel de ejecución predeterminado (2), que es lo que ejecuta el / etc / rc2 .d scripts.
SpamapS

También estoy usando lucid, y puedo asegurarle que las redes no se iniciaron cuando se inició haproxy a través de rc2.d /../ init.d / haproxy. También me di cuenta de que lo que sugería no funcionaba, así que tuve que agregar redes a los niveles de rc 2 3 4 5 para comenzar antes de haproxy, update-rc.d networking start 35 2 3 4 5. Me doy cuenta de que es un piratear, ya que la solución sería agregar un script de inicio. He creado un error contra el paquete haproxy en lucid a tal efecto.

2

Me encontré con este mismo problema después de instalar primero el paquete mantenido de ubuntu y luego (después de darme cuenta de que la versión no admitía la función que necesitaba) Instalar una versión ppa más nueva de haproxy. El script init.d con el que terminé apuntaba a / usr / sbin / haproxy cuando de hecho mi ejecutable estaba en / usr / local / sbin / haproxy. la salida de depuración "sh -xv /etc/init.d/haproxy start" mencionada anteriormente hizo que este problema fuera bastante obvio.


Me gustaría votar esto al menos dos veces.
Balázs Németh

2

¿Intentaste iniciarlo como root o con sudo? Si eres como yo, a veces olvidas agregar sudo al frente de los comandos. Probé todos tus comandos sin sudo, y fallaron como describiste. Sin embargo, con sudo frente a ellos, utilizando un haproxy.cfgarchivo predeterminado de instalación, ahora se ejecuta sin problemas. Solo pensé en señalar que incluso con las configuraciones correctas, para mí no funcionará sin sudo.


:) sí, hecho como root
Assaf Lavie

1

Acabo de encontrar el mismo problema con el script haproxy init.d en lucid. Simplemente no pude iniciar el haproxy, así que lo busqué y descubrí que tenía que cambiar la variable ENABLED en el script /etc/init.d/haproxy.

Sin embargo, cambiar esta variable NO ayudó en absoluto y esta es la razón: unas pocas líneas más abajo en /etc/init.d/haproxy, el script verifica la variable ENABLED con la siguiente línea: test "$ ENABLED"! = "0" || salida 0. Noté que esta prueba SIEMPRE fallará en mi sistema, sin importar cuál sea el valor de HABILITADO. Por lo tanto, el resto del script nunca se ejecuta.

Debo admitir que realmente no sé por qué esta línea de prueba no funciona correctamente. Pero como queremos que se habilite el haproxy de todos modos, ¿por qué molestarse en verificarlo? ... Al comentar esta línea de prueba, funcionó para mí.

Espero que esto ayude a cualquiera.


Creo que se supone que debes configurar el indicador habilitado en / etc / default / haproxy
UpTheCreek

0

También seguí mirando el scipt, no podía ver por qué no funcionaba a pesar de lo ENABLED=1definido en el guión de inicio.

Eventualmente, después de mirar un poco hacia abajo, verá que /etc/default/haproxy-filese obtiene justo antes de que se realice la prueba, sobrescribiendo así la variable set en el script de inicio ...


0

Se encontró con el mismo problema en azul con un debian vm. Resulta ser bastante simple. El script de inicio de haproxy utiliza dependencias de tiempo de ejecución. En el sistema anterior, update-rc.d era el camino a seguir, pero en el sistema más nuevo se usa insserv: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

Entonces, si ha utilizado update-rc.d para agregar el servicio haproxy en sistemas más nuevos, debe hacer lo siguiente:

$ sudo update-rc.d -f haproxy remove

$ sudo insserv haproxy

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.