haproxy nie uruchamia się

20

Zainstalowałem nowy serwer Ubuntu 10.04 i logując się jako root Zainstalowałem haproxy za pomocą apt-get.

Mogę uruchamiać haproxy bezpośrednio jako demon, ale kiedy /etc/init.d/haproxy startnic nie robię , nawet nie pojawia się komunikat o błędzie.

netstat -a pokazuje, że nic nie używa portu http, który próbuję zrównoważyć z haproxy ...

Pomysły?

Edytować

  1. Zauważyłem, apt-get install haproxyże w końcu to mówi:

    update-rc.d: ostrzeżenie: /etc/init.d/haproxy brak informacji o LSB update-rc.d: patrz http://wiki.debian.org/LSBInitScripts

  2. /etc/default/haproxy mówi ENABLED=1

Wyjście debugujące dla 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
źródło
Możesz spróbować debugować skrypt startowy za pomocą: sh -xv /etc/init.d/haproxy start
João Pinto

Odpowiedzi:

39

Edytuj /etc/default/haproxyi upewnij się, że ma w nim wiersz ENABLED=1.

Wartość domyślna to ENABLED = 0. Dzieje się tak, ponieważ haproxy nie ma rozsądnej domyślnej konfiguracji, więc musisz go najpierw skonfigurować, a następnie włączyć.

Spamapy
źródło
Ustawiłem ENABLED = 1, wciąż nic ...
Assaf Lavie
Assaf, wciąż musisz skonfigurować haproxy. Jeśli plik konfiguracyjny jest niepoprawny, nie uruchomi się i prawdopodobnie wydrukował błędy w logach systemowych (sprawdź /var/log/daemon.log i / var / log / syslog)
SpamapS
2
Dlaczego nie zaczyna się bez pełnych wiadomości? To naprawdę mylące!
Nikolay Fominyh
1
@NikolayFominyh Zgadzam się, to jest mylące! W końcu odnajduję ten wątek w kółko, ponieważ co około 8 miesięcy muszę konfigurować nowy haproxy i zawsze zapominam o wymogu włączenia usług w / etc / default / *. Chciałbym, aby coś pojawiło się w dzienniku systemowym podczas próby uruchomienia usługi wyłączonej.
Jay Taylor,
3

Miałem ten sam problem, w którym ustawienie WŁĄCZONE nie miało żadnego efektu, ponieważ linia „test” zawsze zawodziła. Znalazłem powód: musisz edytować /etc/default/haproxyzamiast skryptu inicjującego.

Justin Karneges
źródło
3

Wiem, że to roczny wątek .. ale po prostu próbuję podzielić się tym, czego się nauczyłem ..

użyj /etc/init.d/haproxy reload lub, service haproxy reloada przeładuje się dobrze .. w końcu chcemy, żeby zaczęło się dobrze;)

Cikgureza
źródło
2

Mam podobny problem. Już ustawiłem ENABLED = 1, ale domyślna konfiguracja update-rc.d wydaje się umieszczać haproxy w K20 (rc0 | 1 | 6.d) i w S20 (rc2 | 3 | 4 | 5.d). Co oznacza, że ​​spróbuje uruchomić się przed podłączeniem do sieci, więc w moim przypadku otrzymuję to w boot.log: -

 * Uruchamianie haproxy haproxy [ALERT] 346/160552 (927): Uruchamianie haproxy proxy: nie można powiązać gniazda
[ALERT] 346/160552 (927): Uruchamianie proxy haproxy: nie można powiązać gniazda
[ALERT] 346/160552 (927): Uruchamianie proxy haproxy: nie można powiązać gniazda
[ALERT] 346/160552 (927): Uruchamianie proxy haproxy: nie można powiązać gniazda
[ALERT] 346/160552 (927): Uruchamianie proxy haproxy: nie można powiązać gniazda
[ALERT] 346/160552 (927): Uruchamianie proxy haproxy: nie można powiązać gniazda
[ALERT] 346/160552 (927): Uruchamianie proxy haproxy: nie można powiązać gniazda
                                                                         [zawieść]

zmiana numeru startowego na 35 wydaje się to naprawiać, ale myślę, że 36 byłoby bezpieczniejsze (stary numer w sieci to 35, więc najlepiej zacząć od tego później). Więc spróbuj:-

update-rc.d -f haproxy usuń
update-rc.d haproxy start 35 2 3 4 5. zatrzymać 20 0 1 6.

Następnie uruchom ponownie i powinno to posortować. Opiekunowie pakietów naprawdę powinni o tym pomyśleć.


źródło
SiBaz, nie jestem pewien, jakiej wersji Ubuntu używasz, ale w Lucid, o który chodziło pytanie, sieć rozpoczyna się poprzez upstart, zanim rc-sysinit przejdzie do domyślnego poziomu uruchamiania (2), który uruchamia / etc / rc2 .d skrypty.
SpamapS
Ja też używam klarowności i zapewniam, że sieciowanie nie rozpoczęło się, gdy haproxy został uruchomiony przez rc2.d /../ init.d / haproxy. Zauważyłem również, że to, co zasugerowałem, nie działa, więc musiałem dodać sieć do poziomów rc 2 3 4 5, aby rozpocząć przed haproxy, aktualizacja sieci rc.d 35 35 3 3 4 5. Zdaję sobie sprawę, że to włamać się, ponieważ rozwiązaniem byłoby dodanie skryptu upstart. Stworzyłem błąd w stosunku do pakietu haproxy, żeby to zrobić.
2

Natknąłem się na ten sam problem po pierwszej instalacji pakietu utrzymywanego na Ubuntu, a następnie (po uświadomieniu sobie, że wersja nie obsługuje potrzebnej mi funkcji) Instalowanie ppa nowszej wersji haproxy. Skrypt init.d, który zakończyłem, wskazywał na / usr / sbin / haproxy, gdy w rzeczywistości mój plik wykonywalny znajdował się w / usr / local / sbin / haproxy. wspomniane wcześniej wyjście debugowania „sh -xv /etc/init.d/haproxy start” uczyniło ten problem dość oczywistym.

grendal_prime
źródło
Chciałbym to zagłosować przynajmniej dwa razy.
Balázs Németh
2

Czy próbowałeś uruchomić go jako root, czy sudo? Jeśli jesteś podobny do mnie, czasami zapominasz dodać sudo z przodu poleceń. Wypróbowałem wszystkie twoje polecenia bez sudo, a one zawiodły, jak opisałeś. Jednak z sudo przed nimi, przy użyciu domyślnego haproxy.cfgpliku z instalacji, teraz działa bez problemów. Pomyślałem, że wskazałbym, że nawet przy prawidłowych konfiguracjach, dla mnie nie obejdzie się bez sudo.

nieznany z nazwiska
źródło
:) tak, wykonane jako root
Assaf Lavie
1

Właśnie spotkałem ten sam problem ze skryptem haproxy init.d na klarownym. Po prostu nie mogłem uruchomić haproxy, więc poszukałem go i odkryłem, że musisz zmienić zmienną ENABLED w skrypcie /etc/init.d/haproxy.

Zmiana tej zmiennej jednak wcale NIE pomogła i dlatego: Kilka linii niżej w /etc/init.d/haproxy zmienna ENABLED jest sprawdzana przez skrypt za pomocą następującego wiersza: test „$ ENABLED”! = „0” || wyjście 0. Zauważyłem, że ten test ZAWSZE zawiódłby w moim systemie, bez względu na wartość ENABLED. Reszta skryptu nigdy nie jest uruchamiana.

Muszę przyznać, że tak naprawdę nie wiem, dlaczego ta linia testowa nie działa poprawnie. Ale skoro i tak chcemy włączyć haproxy, po co zawracać sobie głowę sprawdzaniem? ... Komentowanie tej linii testowej sprawiło, że zadziałała.

Mam nadzieję, że to pomoże każdemu.


źródło
Myślę, że powinieneś tak ustawić flagę włączoną w / etc / default / haproxy
UpTheCreek 13.01.2013
0

Wciąż wpatrywałem się w ten scipt, nie mogłem zrozumieć, dlaczego nie działa pomimo ENABLED=1zdefiniowanego w skrypcie init.

W końcu, po lekkim spojrzeniu w dół, zobaczysz, że /etc/default/haproxy-filejest on pozyskiwany tuż przed wykonaniem testu, zastępując w ten sposób zmienną set w samym skrypcie init ...

ZSRR
źródło
0

Napotkałem ten sam problem na lazur z debian vm. Okazuje się dość proste. Skrypt inicjujący haproxy wykorzystuje zależności w czasie wykonywania. W starszym systemie update-rc.d było właściwą drogą, ale w nowszym systemie zastosowano insserv: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

Więc jeśli użyłeś update-rc.d, aby dodać usługę haproxy w nowszych systemach, powinieneś:

$ sudo update-rc.d -f haproxy usuń

$ sudo insserv haproxy

Olivier de Jong
źródło