Haproxy startet nicht

20

Installierte einen neuen Ubuntu 10.04 Server und loggte sich als root ein. Ich installierte haproxy mit apt-get.

Ich kann haproxy direkt als Daemon ausführen, aber wenn ich /etc/init.d/haproxy startnichts tue , passiert nicht einmal eine Fehlermeldung.

netstat -a zeigt an, dass nichts den http-Port verwendet, den ich mit haproxy ausgleichen möchte ...

Ideen?

Bearbeiten

  1. Mir ist aufgefallen, apt-get install haproxydass dies am Ende sagt:

    update-rc.d: Warnung: /etc/init.d/haproxy fehlende LSB-Informationen. update-rc.d: Siehe http://wiki.debian.org/LSBInitScripts

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

Debugging-Ausgabe für 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
quelle
Sie können versuchen, das Startskript mit dem folgenden Befehl zu debuggen: sh -xv /etc/init.d/haproxy start
João Pinto

Antworten:

39

Bearbeiten /etc/default/haproxyund stellen Sie sicher, dass eine Zeile mit der Aufschrift vorhanden ENABLED=1ist.

Der Standardwert ist ENABLED = 0. Dies geschieht, weil haproxy keine vernünftige Standardkonfiguration hat. Sie müssen es also zuerst konfigurieren und dann aktivieren.

SpamapS
quelle
Ich habe ENABLED = 1 gesetzt, immer noch nichts ..
Assaf Lavie
Assaf, du musst noch Haproxy konfigurieren. Wenn die Konfigurationsdatei nicht korrekt ist, wird sie nicht gestartet und enthält möglicherweise gedruckte Fehler in den Systemprotokollen (überprüfen Sie /var/log/daemon.log und /var / log / syslog)
SpamapS
2
Warum startet es nicht ohne ausführliche Meldung? Es ist wirklich verwirrend!
Nikolay Fominyh
1
@NikolayFominyh Ich stimme zu, das ist verwirrend! Ich finde diesen Thread irgendwann immer wieder, weil ich etwa alle 8 Monate einen neuen Haproxy einrichten muss und immer wieder vergesse, dass Dienste in / etc / default / * aktiviert werden müssen. Ich wünschte, etwas würde im Syslog auftauchen, wenn Sie versuchen, einen deaktivierten Dienst zu starten.
Jay Taylor
3

Ich hatte das gleiche Problem, bei dem die Einstellung AKTIVIERT keine Auswirkung hatte, da die Zeile "Test" immer fehlschlug. Fand den Grund: Sie müssen /etc/default/haproxyanstelle des Init-Skripts bearbeiten .

Justin Karneges
quelle
3

Ich kenne diesen einjährigen Thread, aber ich versuche nur zu teilen, was ich gelernt habe.

benutze /etc/init.d/haproxy reload oder service haproxy reloadund es wird wieder geladen .. immerhin wollen wir nur, dass es richtig startet;)

cikgureza
quelle
2

Ich habe ein ähnliches Problem. Ich habe bereits ENABLED = 1 gesetzt, aber die Standardkonfiguration von update-rc.d scheint darin zu bestehen, den Haproxy in K20 (rc0 | 1 | 6.d) und in S20 (rc2 | 3 | 4 | 5.d) zu setzen. Das heißt, es wird versucht, vor dem Netzwerkstart zu starten. In meinem Fall wird dies in boot.log angezeigt:

 * Starten von Haproxy Haproxy [ALERT] 346/160552 (927): Starten von Proxy Haproxy: Kann Socket nicht binden
[ALERT] 346/160552 (927): Proxy-Haproxy wird gestartet: Socket kann nicht gebunden werden
[ALERT] 346/160552 (927): Proxy-Haproxy wird gestartet: Socket kann nicht gebunden werden
[ALERT] 346/160552 (927): Proxy-Haproxy wird gestartet: Socket kann nicht gebunden werden
[ALERT] 346/160552 (927): Proxy-Haproxy wird gestartet: Socket kann nicht gebunden werden
[ALERT] 346/160552 (927): Proxy-Haproxy wird gestartet: Socket kann nicht gebunden werden
[ALERT] 346/160552 (927): Proxy-Haproxy wird gestartet: Socket kann nicht gebunden werden
                                                                         [Scheitern]

Das Ändern der Startnummer auf 35 scheint das Problem zu beheben, aber ich denke, 36 wäre sicherer (die alte Nummer für die Vernetzung war 35, also starten Sie am besten danach). Also versuche:-

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

Starten Sie dann neu und es sollte es sortieren. Die Paketbetreuer hätten wirklich darüber nachdenken sollen.


quelle
SiBaz, nicht sicher, welche Ubuntu-Version Sie ausführen, aber in Lucid, dem System, um das es ging, wird die Vernetzung über upstart gestartet, bevor rc-sysinit auf das Standard-Runlevel (2) übergeht, auf dem / etc / rc2 ausgeführt wird .d Skripte.
SpamapS
Ich verwende auch Lucid und ich kann Ihnen versichern, dass das Netzwerk nicht gestartet wurde, als Haproxy über RC2.D /../Init.D / Haproxy gestartet wurde. Mir ist auch aufgefallen, dass das, was ich vorgeschlagen habe, nicht funktioniert hat. Ich musste daher die Vernetzung zu RC-Level 2 3 4 5 hinzufügen, um zu starten, bevor haproxy, update-rc.d die Vernetzung startet Hack, da die Lösung darin besteht, ein Upstart-Skript hinzuzufügen. Ich habe einen Fehler gegen das Haproxy-Paket auf lucid zu diesem Zweck erstellt.
2

Ich bin auf dasselbe Problem gestoßen, nachdem ich zuerst das von Ubuntu gepflegte Paket installiert und dann (nachdem ich festgestellt habe, dass die Version die von mir benötigte Funktion nicht unterstützt hat) eine ppa-neuere Version von Haproxy installiert habe. Das init.d-Skript, mit dem ich endete, zeigte auf / usr / sbin / haproxy, obwohl sich meine ausführbare Datei in / usr / local / sbin / haproxy befand. Die zuvor erwähnte Debug-Ausgabe "sh -xv /etc/init.d/haproxy start" machte dieses Problem ziemlich offensichtlich.

grendal_prime
quelle
Ich würde das gerne mindestens zweimal bewerten.
Balázs Németh
2

Haben Sie versucht, es als root oder mit sudo zu starten? Wenn Sie wie ich sind, vergessen Sie manchmal, vor den Befehlen sudo einzufügen. Ich habe alle Ihre Befehle ohne sudo ausprobiert und sie sind fehlgeschlagen, wie Sie beschrieben haben. Da sudo jedoch eine Standarddatei haproxy.cfgaus der Installation verwendet, wird es jetzt ohne Probleme ausgeführt. Ich dachte nur, ich würde darauf hinweisen, dass es auch mit den richtigen Einstellungen für mich nicht ohne sudo geht.

John Doe
quelle
:) ja, als root gemacht
Assaf Lavie
1

Ich bin gerade auf dasselbe Problem mit dem Skript haproxy init.d auf lucid gestoßen. Ich konnte Haproxy einfach nicht starten, also habe ich nachgeschlagen und festgestellt, dass Sie die Variable ENABLED im Skript /etc/init.d/haproxy ändern müssen.

Das Ändern dieser Variablen hat jedoch NICHT geholfen, und aus diesem Grund: Ein paar Zeilen tiefer in /etc/init.d/haproxy wird die Variable ENABLED vom Skript mit der folgenden Zeile überprüft: test "$ ENABLED"! = "0" || Beenden Sie 0. Ich habe festgestellt, dass dieser Test auf meinem System IMMER fehlschlagen würde, egal was der Wert von ENABLED ist. Der Rest des Skripts wird also nie ausgeführt.

Ich muss zugeben, dass ich nicht wirklich weiß, warum diese Testlinie nicht richtig funktioniert. Aber da wir wollen, dass Haproxy sowieso aktiviert ist, warum sollten wir uns die Mühe machen, es zu überprüfen? ... Das Auskommentieren dieser Testzeile hat für mich funktioniert.

Hoffe das hilft jedem.


quelle
Ich denke, Sie sollten das aktivierte Flag in / etc / default / haproxy
UpTheCreek setzen
0

Ich starrte auch weiter auf das Skript, konnte nicht erkennen, warum es trotz der ENABLED=1im Init-Skript definierten Fehler nicht funktionierte .

Nachdem Sie ein wenig nach unten geschaut haben, werden Sie feststellen, dass die /etc/default/haproxy-fileQuelle unmittelbar vor dem Test ausgewählt wurde, wodurch die Set-Variable im Init-Skript selbst überschrieben wird.

UdSSR
quelle
0

Stieß auf das gleiche Problem in Azure mit einem Debian-VM. Es stellt sich als recht einfach heraus. Das Init-Skript von Haproxy verwendet Laufzeitabhängigkeiten. Auf älteren Systemen war update-rc.d der richtige Weg, aber auf neueren Systemen wird insserv verwendet: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

Wenn Sie also update-rc.d verwendet haben, um den Haproxy-Dienst auf neueren Systemen hinzuzufügen, sollten Sie Folgendes tun:

$ sudo update-rc.d -f haproxy entfernen

$ sudo insserv haproxy

Olivier de Jong
quelle