启动Haproxy失败,如何排查问题
1 问题描述
在启动Haproxy时,发现总是无法访问前端页面。刚开始意味配置文件出问题,在使用命令:
haproxy -c -f /etc/haproxy/haproxy.cfg
检查配置文件格式,发现并不是配置文件的格式问题,ip和端口号也没有配置出错。就去查看日志:
journalctl -u haproxy -f
启动日志报错无法绑定[0.0.0.0:8100]和[0.0.0.0:5670],也就意味着要么是端口号被占用,要么是端口号因为防火墙或安全性无法开放或者绑定。
于是首先查看端口号是否被占用:
firewall-cmd --list-all | grep -E '5670|8100'
无任何输出则说明没有被占用,此时就说明可能是因为安全性或者防火墙才导致失败。可是我的虚拟机防火墙并未运行,因此只可能是安全性问题。
2 问题解决
SELinux(安全增强型 Linux)默认会限制服务(如 HAProxy)的网络连接行为。未明确授权时,HAProxy 无法绑定非标准端口(如 5670、8100),即使端口未被占用。
因此使用命令:
setsebool -P haproxy_connect_any=1
修改 SELinux 策略,允许 HAProxy 绕过默认端口限制,直接绑定配置文件中指定的端口。
问题得到解决。