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

Установил новый сервер 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 update-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:~#

20
задан 30.10.2019, 20:49

8 ответов

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

Однако изменение этой переменной не помогло вообще, и вот почему: на несколько строк ниже в /etc/init.d/haproxy переменная ENABLED проверяется сценарием со следующей строкой: test "$ ENABLED "! =" 0 "|| выход 0. Я заметил, что этот тест ВСЕГДА потерпит неудачу в моей системе, независимо от значения ENABLED. Таким образом, остальная часть сценария никогда не запускается.

Должен признать, что я на самом деле не знаю, почему эта тестовая линия не работает должным образом. Но так как мы хотим, чтобы haproxy был включен в любом случае, зачем беспокоиться о проверке? ... Комментирование этой тестовой строки заставило меня работать.

Надеюсь, это кому-нибудь поможет.

0
ответ дан 30.10.2019, 20:49
  • 1
    Я думаю, вы должны установить флаг включения в / etc / default / haproxy – balint 30.10.2019, 20:50

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

0
ответ дан 30.10.2019, 20:50
  • 1
    Я хотел бы высказать это по крайней мере дважды. – Mark Larter 30.10.2019, 20:51

У меня похожая проблема. Я уже установил ENABLED = 1, но конфигурация update-rc.d по умолчанию, похоже, помещает haproxy в K20 (rc0 | 1 | 6.d) и в S20 (rc2 | 3 | 4 | 5.d). Это означает, что он будет пытаться запускаться до подключения к сети, поэтому в моем случае я получаю это в 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]

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

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

Затем перезагрузите компьютер, и он должен отсортировать его. Разработчики пакетов действительно должны были подумать об этом.

0
ответ дан 30.10.2019, 20:51
  • 1
    Я также использую lucid, и я могу заверить, что ваша сеть еще не началась, когда haproxy был запущен через rc2.d /../ init.d / haproxy. Я также заметил, что то, что я предложил, не сработало, поэтому мне пришлось добавить сеть к уровням rc 2 3 4 5, чтобы запустить ее до запуска haproxy, update-rc.d network 35 2 3 4 5. Я понимаю, что это взломать, как решение будет добавить сценарий выскочки. Я создал ошибку в пакете haproxy на lucid с этой целью. – Guy van den Berg 30.10.2019, 20:51
  • 2
    SiBaz, не уверен, с какой версией Ubuntu вы работаете, но в Lucid система, о которой шла речь, запускается через upstart, перед тем как rc-sysinit переходит на уровень запуска по умолчанию (2), то есть для запуска / etc / rc2 .d скрипты. – Nyerguds 30.10.2019, 20:52

Я знаю эту ветку годичной давности ... но просто пытаюсь поделиться тем, что я узнал ..

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

0
ответ дан 30.10.2019, 20:51

Я также продолжал смотреть на скипт, не мог понять, почему он не работал, несмотря на ENABLED=1, определенный в init-script.

В конце концов, немного посмотрев вниз, вы увидите, что источник /etc/default/haproxy-file получен непосредственно перед выполнением теста, таким образом перезаписывая переменную set в самом скрипте init ...

0
ответ дан 30.10.2019, 20:52

У меня была та же проблема, когда настройка ENABLED не имела эффекта из-за того, что строка «test» всегда терпела неудачу. Выяснили причину: вам нужно отредактировать /etc/default/haproxy вместо сценария инициализации.

0
ответ дан 30.10.2019, 20:52

Отредактируйте /etc/default/haproxy и убедитесь, что в нем есть строка с надписью ENABLED=1.

По умолчанию установлено ENABLED = 0. Это сделано потому, что haproxy не имеет нормальной конфигурации по умолчанию, поэтому вам нужно сначала настроить ее, а затем включить.

0
ответ дан 30.10.2019, 20:53
  • 1
    Я установил ENABLED = 1, все еще ничего .. – John Leidegren 30.10.2019, 20:53
  • 2
    @NikolayFominyh Я согласен, это сбивает с толку! Я в конечном итоге нахожу эту тему снова и снова, потому что каждые 8 ​​месяцев мне приходится настраивать новый haproxy, и я всегда забываю о необходимости включить службы в / etc / default / *. Я хотел бы, чтобы что-то всплыло в системном журнале, когда вы пытаетесь запустить отключенную службу. – Peter Taylor 30.10.2019, 20:54
  • 3
    Assaf, вам все еще нужно настроить haproxy. Если файл конфигурации неправильный, он не запустится и, вероятно, напечатал ошибки в системных журналах (проверьте /var/log/daemon.log и / var / log / syslog) – Michael Freidgeim 30.10.2019, 20:54
  • 4
    Почему это не начинается без какого-либо подробного сообщения? Это действительно сбивает с толку! – IKavanagh 30.10.2019, 20:54

Столкнулся с той же проблемой на лазурном с Debian VM. Оказывается довольно просто. Сценарий инициализации haproxy использует зависимости времени выполнения. На более старой системе update-rc.d был подходящим вариантом, но на более новой системе используется insserv: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

Так что если вы Чтобы добавить службу haproxy в более новые системы, используйте update-rc.d, вам нужно сделать:

$ sudo update-rc.d -f haproxy remove

$ sudo insserv haproxy

0
ответ дан 30.10.2019, 20:53

Теги

Похожие вопросы