haproxy无法启动


20

安装了新的Ubuntu 10.04服务器并以root用户身份登录,我使用apt-get安装了haproxy。

我可以将haproxy直接作为守护程序运行,但是当我什么/etc/init.d/haproxy start也不做时..甚至没有错误消息。

netstat -a 显示没有任何内容正在使用我试图与haproxy保持平衡的http端口...

有想法吗?

编辑

  1. 我注意到apt-get install haproxy最后说的是:

    update-rc.d:警告:/etc/init.d/haproxy缺少LSB信息update-rc.d:请参见http://wiki.debian.org/LSBInitScripts

  2. /etc/default/haproxyENABLED=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开始
若奥·平托

Answers:


39

编辑/etc/default/haproxy并确保它的一行显示ENABLED=1

默认值为ENABLED = 0。这样做是因为haproxy没有健全的默认配置,因此您需要先配置它,然后再启用它。


我将Enable = 1,仍然一无所获..
阿萨夫拉维

Assaf,您仍然需要配置haproxy。如果配置文件不正确,它将无法启动,并且可能已将错误打印到系统日志中(检查/var/log/daemon.log和/ var / log / syslog)
SpamapS 2010年

2
为什么没有没有任何详细信息就开始?真是令人困惑!
Nikolay Fominyh'5

1
@NikolayFominyh我同意,这令人困惑!我最终会一遍又一遍地找到该线程,因为每隔8个月左右,我必须设置一个新的haproxy,而我始终忘记了在/ etc / default / *中启用服务的要求。我希望当您尝试启动禁用的服务时,系统日志中会弹出一些消息。
杰伊·泰勒


3

我知道这是一岁的话题..但是只是想分享我学到的知识..

使用/etc/init.d/haproxy reload or service haproxy reload它将重新加载正常..毕竟,我们只希望它开始正确;)


2

我有一个类似的问题。我已经设置了ENABLED = 1,但是默认的update-rc.d配置似乎是将haproxy放在K20(rc0 | 1 | 6.d)和S20(rc2 | 3 | 4 | 5.d)中。这意味着它将尝试在网络连接之前启动,因此我的情况是在boot.log中获得它:

 *启动haproxy haproxy [ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
[ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
[ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
[ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
[ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
[ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
[ALERT] 346/160552(927):启动代理haproxy:无法绑定套接字
                                                                         [失败]

将启动编号更改为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)之前的upstart启动网络,该运行级别是/ etc / rc2 .d脚本。
SpamapS 2010年

我也使用了lucid,可以确保当通过rc2.d /../ init.d / haproxy启动haproxy时,网络尚未启动。我还注意到,我的建议没有用,所以我必须在rc级别2 3 4 5中添加网络才能在haproxy之前启动,update-rc.d的网络开始35 2 3 45。我意识到这是一个hack,因为解决方案是添加新贵脚本。我已经创建了一个针对haproxy包的错误,这很清楚。

2

在首先安装ubuntu维护的软件包之后,然后(意识到该版本不支持我所需的功能之后),我遇到了同样的问题。我总结的init.d脚本实际上指向/ usr / sbin / haproxy,而实际上我的可执行文件位于/ usr / local / sbin / haproxy中。前面提到的调试输出“ sh -xv /etc/init.d/haproxy start”使此问题非常明显。


我想至少投票两次。
巴拉兹内梅特

2

您是否尝试以root或sudo的身份启动它?如果您像我一样,有时会忘记在命令前面添加sudo。我在没有sudo的情况下尝试了所有命令,但这些命令都按照您的描述失败了。但是,在使用sudo的情况下,使用haproxy.cfg安装时的默认文件,它现在可以正常运行。只是以为我要指出的是,即使配置正确,对我来说,没有sudo也不会成功。


:)是的,以root用户
阿萨夫拉维

1

我只是在lucid上使用haproxy init.d脚本遇到了相同的问题。我根本无法启动haproxy,因此我进行了查找,发现您必须在/etc/init.d/haproxy脚本中更改ENABLED变量。

更改此变量根本没有帮助,这就是原因:/etc/init.d/haproxy下几行由脚本使用以下行检查ENABLED变量:test“ $ ENABLED”!=“ 0” || 退出0。我注意到此测试将始终在我的系统上失败,无论如何,ENABLED的值是多少。因此,脚本的其余部分永远不会运行。

我必须承认,我真的不知道为什么该测试线不能正常工作。但是由于无论如何我们都希望启用haproxy,为什么还要麻烦检查呢?...注释掉该测试行使其对我有用。

希望这对任何人有帮助。


我认为您应该在/ etc / default / haproxy中设置启用标志
UpTheCreek 2013年

0

我也一直盯着它,看不到为什么尽管ENABLED=1init脚本中定义了它也没有用。

最终,向下看一看,您将看到/etc/default/haproxy-file在执行测试之前就发现了,从而覆盖了init脚本本身中的set-variable ...


0

使用debian vm在azure上遇到相同的问题。事实证明很简单。haproxy的init脚本使用运行时依赖项。在较旧的系统上,update-rc.d是可行的方法,但在较新的系统上,则使用insserv:https : //wiki.debian.org/LSBInitScripts/DependencyBasedBoot

因此,如果您已使用update-rc.d在较新的系统上添加haproxy服务,则应执行以下操作:

$ sudo update-rc.d -f haproxy删除

$ sudo insserv haproxy

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.