haproxy nie uruchamia się

20

Zainstalowałem nowy serwer Ubuntu 10.04 i zalogowałem się jako root I zainstalowałem haproxy używając apt-get.

Mogę uruchomić haproxy bezpośrednio jako demona, ale kiedy robię /etc/init.d/haproxy start nic się nie dzieje ... nawet komunikat o błędzie.

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

Pomysły?

Edycja

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

    update-rc.d: warning: /etc/init.d/haproxy brakuje informacji LSB update-rc.d: patrz link

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

Wynik debugowania 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:~#
    
zadawane Assaf Lavie 30.11.2010, 19:48
źródło

9 odpowiedzi

39

Edytuj /etc/default/haproxy i upewnij się, że ma linię zawierającą ENABLED=1 .

Wartością domyślną jest ENABLED = 0. Dzieje się tak, ponieważ haproxy nie ma domyślnej konfiguracji domyślnej, więc musisz ją najpierw skonfigurować, a następnie włączyć.

    
odpowiedział SpamapS 30.11.2010, 19:52
źródło
3

Miałem ten sam problem, w którym ustawienie ENABLED nie przyniosło żadnego efektu, ponieważ linia "testowa" zawsze zawodzi. Znalazłem powód: musisz edytować /etc/default/haproxy zamiast skryptu init.

    
odpowiedział Justin Karneges 03.12.2011, 22:46
źródło
3

Znam ten roczny wątek .. ale próbuję podzielić się tym, czego się nauczyłem ..

używaj /etc/init.d/haproxy reload lub service haproxy reload i ładuje się on poprawnie, po prostu chcemy, żeby zaczął się poprawnie;)

    
odpowiedział cikgureza 06.12.2012, 06:32
źródło
2

Mam podobny problem. Już ustawiłem ENABLED = 1, ale domyślną opcją update-rc.d wydaje się być umieszczenie haproxy w K20 (rc0 | 1 | 6.d) i S20 (rc2 | 3 | 4 | 5.d). Co oznacza, że ​​spróbuje zacząć przed nawiązaniem połączenia, więc w moim przypadku otrzymam to w boot.log: -

 * Starting haproxy haproxy                                                     [ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
[ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
[ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
[ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
[ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
[ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
[ALERT] 346/160552 (927) : Starting proxy haproxy: cannot bind socket
                                                                         [fail]

zmiana numeru startowego na 35 wydaje się naprawić, ale myślę, że 36 byłby bezpieczniejszy (stary numer dla sieci to 35, więc najlepiej zacząć od tego czasu). Więc spróbuj: -

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

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

    
odpowiedział SiBaz 13.12.2010, 17:17
źródło
2

Wpadłem na ten sam problem po pierwszym zainstalowaniu pakietu ubuntu, a następnie (po tym, jak wersja nie obsługiwała wymaganej funkcji). Zainstalowanie nowej wersji haproxy ppa. Skrypt init.d, który został zakończony, wskazywał na / usr / sbin / haproxy, podczas gdy w rzeczywistości mój plik wykonywalny znajdował się w / usr / local / sbin / haproxy. wyjście do debugowania "sh -xv /etc/init.d/haproxy start" wspomniane wcześniej sprawiło, że problem ten był dość oczywisty.

    
odpowiedział grendal_prime 03.05.2012, 17:29
źródło
2

Czy próbowałeś uruchomić go jako root, czy z sudo? Jeśli jesteś podobny do mnie, czasami zapominasz dodać sudo na początku poleceń. Próbowałem wszystkich twoich poleceń bez sudo i nie udało im się, jak opisałeś. Jednak z sudo przed nimi, używając domyślnego pliku haproxy.cfg z instalacji, teraz działa bez problemów. Pomyślałem, że wskażę, że nawet z poprawnymi konfiguracjami, dla mnie nie obejdzie się bez sudo.

    
odpowiedział John Doe 17.08.2011, 19:51
źródło
1

Właśnie napotkałem ten sam problem ze skryptem haproxy init.d na Lucid. Po prostu nie mogłem uruchomić haproxy, więc sprawdziłem i stwierdził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ącej linii: test "$ ENABLED"!="0" || exit 0. Zauważyłem, że ten test ZAWSZE zakończy się niepowodzeniem w moim systemie, nie ma znaczenia, jaka jest wartość ENABLED. Reszta skryptu nigdy nie zostanie uruchomiona.

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

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

    
odpowiedział user9189 19.01.2011, 10:44
źródło
0

Ciągle też wpatrywałem się w scipt, nie mogłem zrozumieć, dlaczego nie działało pomimo ENABLED=1 zdefiniowanego w skryptach init.

Ostatecznie, po pewnym spojrzeniu zobaczysz, że /etc/default/haproxy-file pochodzi bezpośrednio przed wykonaniem testu, a więc nadpisuje zmienną set w samym skryptu startowym ...

    
odpowiedział ussr 09.08.2013, 17:37
źródło
0

Wystąpił ten sam problem na lazurach z debian vm. Okazuje się całkiem prosty. Skrypt init haproxy używa zależności uruchomionych. W starszych wersjach systemu update-rc.d był rozwiązaniem, ale na nowszym systemie wykorzystywana jest ochrona: link

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

$ sudo update-rc.d -f haproxy remove

$ sudo insserv haproxy

    
odpowiedział Olivier de Jong 04.05.2015, 21:06
źródło

Przeczytaj inne pytania na temat tagów