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

20

Установлен новый сервер Ubuntu 10.04 и вход в систему с правами root, который я установил haproxy, используя apt-get.

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

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

Идеи?

Edit

  1. Я заметил, что apt-get install haproxy говорит об этом в конце:

    update-rc.d: предупреждение: /etc/init.d/haproxy отсутствует информация LSB update-rc.d: см. Ссылка

  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:~#
    
задан Assaf Lavie 30.11.2010 в 19:48
источник

9 ответов

38

Измените /etc/default/haproxy и убедитесь, что у него есть строка, в которой говорится о ENABLED=1 .

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

    
ответ дан SpamapS 30.11.2010 в 19:52
3

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

    
ответ дан Justin Karneges 03.12.2011 в 22:46
3

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

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

    
ответ дан cikgureza 06.12.2012 в 06:32
2

У меня аналогичная проблема. Я уже установил 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 .

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

ответ дан SiBaz 13.12.2010 в 17:17
2

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

    
ответ дан grendal_prime 03.05.2012 в 17:29
2

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

ответ дан John Doe 17.08.2011 в 19:51
1

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

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

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

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

    
ответ дан user9189 19.01.2011 в 10:44
0

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

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

    
ответ дан ussr 09.08.2013 в 17:37
0

Ran в ту же задачу на лазуре с дебианским vm. Оказывается, это довольно просто. В скрипте init для haproxy используются зависимости времени выполнения. В старой системе обновление-rc.d было возможным, но в новой системе используется insserv: Ссылка

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

$ sudo update-rc.d -f haproxy remove

$ sudo insserv haproxy

    
ответ дан Olivier de Jong 04.05.2015 в 21:06