haproxy не запускається


20

Встановив новий сервер Ubuntu 10.04 та увійшов у систему як root, я встановив haproxy за допомогою apt-get.

Я можу запускати haproxy безпосередньо як демон, але коли я нічого /etc/init.d/haproxy startне роблю, навіть повідомлення про помилку.

netstat -a показує, що нічого не використовує порт http, який я намагаюся збалансувати з haproxy ...

Ідеї?

Редагувати

  1. Я помітив, що apt-get install haproxyговорить це в підсумку:

    update-rc.d: попередження: /etc/init.d/haproxy відсутня інформація про LSB-оновлення-rc.d: див. http://wiki.debian.org/LSBInitScripts

  2. /etc/default/haproxy каже ENABLED=1

Вихід налагодження для 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:~#

Можна спробувати налагодити стартовий сценарій за допомогою: sh -xv /etc/init.d/haproxy start
Жоао Пінто

Відповіді:


39

Відредагуйте /etc/default/haproxyта переконайтеся, що в ньому є рядок, який пише ENABLED=1в ньому.

За замовчуванням ENABLED = 0. Це робиться тому, що haproxy не має нормальної конфігурації за замовчуванням, тому потрібно спочатку налаштувати її, а потім увімкнути її.


Я встановив ENABLED = 1, все ще нічого ..
Assaf Lavie

Assaf, вам все одно потрібно налаштувати haproxy. Якщо конфігураційний файл невірний, він не запуститься, і, ймовірно, надрукував помилки в системних журналах (перевірити /var/log/daemon.log та / var / log / syslog)
SpamapS

2
Чому воно не починається без будь-якого багатослівного повідомлення? Це справді заплутано!
Микола Фоміних

1
@NikolayFominyh Я згоден, це заплутано! Зрештою, я знаходжу цю тему знову і знову, тому що кожні 8 місяців і так мені доводиться встановлювати нову haproxy, і я завжди забуваю про вимогу ввімкнути послуги в / etc / default / *. Я б хотів, щоб щось з'явилося в системі, коли ви намагаєтесь запустити службу з обмеженими можливостями.
Джей Тейлор

3

У мене була така ж проблема, коли встановлення ENABLED не мало ефекту через те, що рядок "тестування" завжди не вдавався. Знайшла причину: вам слід редагувати /etc/default/haproxyзамість сценарію init.


3

Я знаю цю річну нитку .. але просто намагаюся поділитися тим, що я навчився ..

використовувати /etc/init.d/haproxy reload або, service haproxy reloadі він буде перезавантажуватись добре. Після цього ми просто хочемо, щоб це почалося правильно;)


2

У мене схожа проблема. Я вже встановив ENABLED = 1, але конфігурація update-rc.d за замовчуванням, здається, ставить гапрокси в K20 (rc0 | 1 | 6.d) та в S20 (rc2 | 3 | 4 | 5.d). Це означає, що його спробують запустити перед встановленням мережі, тому в моєму випадку я отримую це в boot.log: -

 * Запуск haproxy haproxy [ALERT] 346/160552 (927): запуск proxy haproxy: не може зв’язати сокет
[ALERT] 346/160552 (927): запуск проксі-гапрокси: не може зв’язати сокет
[ALERT] 346/160552 (927): запуск проксі-гапрокси: не може зв’язати сокет
[ALERT] 346/160552 (927): запуск проксі-гапрокси: не може зв’язати сокет
[ALERT] 346/160552 (927): запуск проксі-гапрокси: не може зв’язати сокет
[ALERT] 346/160552 (927): запуск проксі-гапрокси: не може зв’язати сокет
[ALERT] 346/160552 (927): запуск проксі-гапрокси: не може зв’язати сокет
                                                                         [невдача]

зміна стартового номера на 35, здається, це виправить, але я думаю, що 36 було б безпечнішим (старе число для мереж було 35, тому краще запустити його після цього). Тому спробуйте: -

update-rc.d -f haproxy видалити
update-rc.d початок роботи haproxy 35 2 3 4 5. зупинка 20 0 1 6.

Потім перезавантажте, і це слід сортувати. Обслуговувачі пакунків дійсно повинні були подумати про це.


SiBaz, не впевнений, у якій версії Ubuntu ви працюєте, але в Lucid, про систему, про яке йшлося, мережа починається на початку, перш ніж rc-sysinit переходить до рівня запуску за замовчуванням (2), що і запускає / etc / rc2 .d сценарії.
SpamapS

Я також використовую lucid, і я можу запевнити, що мережа не почалася, коли haproxy запускався через rc2.d /../ init.d / haproxy. Я також помітив, що те, що я запропонував, не спрацювало, тому мені довелося додати мережу до рівнів rc 2 3 4 5, щоб почати перед запуском мережі haproxy, update-rc.d 35 2 3 4 5. Я розумію, що це хак, оскільки рішенням було б додати скрипт для запуску. Я створив помилку проти пакету haproxy на зрозумілому для цього ефекту.

2

Я наткнувся на цю саму проблему після того, як спочатку встановив пакунок, що підтримується ubuntu, а потім (після того, як зрозуміла версія не підтримує потрібну мені функцію) Встановлення нової версії haproxy для ppa. Сценарій init.d, який я завершив, вказав на / usr / sbin / haproxy, коли насправді мій виконуваний файл був у / usr / local / sbin / haproxy. згаданий раніше вихід налагодження "sh-xv /etc/init.d/haproxy start" зробив цю проблему досить очевидною.


Я хотів би підтвердити це хоча б двічі.
Balázs Németh

2

Ви намагалися запустити його як root, або з sudo? Якщо ти схожий на мене, ти іноді забуваєш додати судо до передньої частини команд. Я спробував усі ваші команди без судо, і вони провалилися, як ви описали. Однак, з судо перед ними, використовуючи haproxy.cfgфайл за замовчуванням від установки, він зараз працює без проблем. Я просто подумав, що навіть при правильних конфігураціях для мене це не обійдеться без sudo.


:) так, зроблено як корінь
Assaf Lavie

1

Я щойно зіткнувся з тією ж проблемою зі сценарієм haproxy init.d на lucid. Я просто не зміг запустити haproxy, тому переглянув це і виявив, що вам доведеться змінити змінну ENABLED у сценарії /etc/init.d/haproxy.

Однак зміна цієї змінної взагалі НЕ допомогло, і ось чому: Кілька рядків нижче в /etc/init.d/haproxy змінна ENABLED перевіряється сценарієм у наступному рядку: test "$ ENABLED"! = "0" || вихід 0. Я помітив, що цей тест ЗАВЖДИ вийде з ладу в моїй системі, неважливо, яке значення ENABLED. Тож решта сценарію ніколи не виконується.

Треба визнати, я не знаю, чому ця тестова лінія не працює належним чином. Але оскільки ми хочемо, щоб хапрокси був увімкнений, чому б це турбувало перевірку? ... Коментуючи цей тестовий рядок, він змусив мене працювати.

Сподіваюся, що це допоможе комусь.


Я думаю, ви повинні так встановити включений прапор в / etc / default / haproxy
UpTheCreek

0

Я також невпинно дивився на Scipt, не міг зрозуміти, чому він не працює, незважаючи на ENABLED=1визначений сценарій init.

Зрештою, трохи поглянувши вниз, ви побачите, що /etc/default/haproxy-fileджерело знаходиться безпосередньо перед тестом, тим самим перезаписавши змінну set у самому init-скрипті ...


0

Зустрівшись із тією ж проблемою на azure з debian vm. Виявляється, досить просто. Сценарій init для haproxy використовує залежності часу виконання. На старішій системі update-rc.d був шлях, але на новіших системах використовується insserv: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

Тож якщо ви використовували update-rc.d для додавання послуги haproxy у новіших системах, вам слід зробити:

$ sudo update-rc.d -f haproxy видалити

$ sudo insserv haproxy

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.