无法绑定套接字

无法绑定套接字

我需要启动一个 haproxy 服务器,但遇到了一个问题。它显示了以下行:

[ALERT] 251/140351 (749) : 启动前端本地节点:无法绑定套接字 [0.0.0.0:5004]。

我尝试了其他端口,例如 9000 和 80,但问题仍然存在。所以第一个问题是为什么会发生这种情况,我该怎么做才能解决它?

第二个问题是,haproxy 启动行的一部分是“ -p /run/haproxy.pid”。这个文件是什么?

非常感谢您能尽快回复。提前致谢 :)

我的haproxy.conf:

global
   log /dev/log     local0
   log 127.0.0.1    local1 notice
   maxconn          256
   user             nobody
   group            haproxy
   daemon

defaults
   log              global
   mode             http
   option           httplog
   option           httplognull
   retries          3
   option           redispatch
   maxconn          2000
   timeout connect  5000
   timeout client   50000
   timeout server   50000

 frontend localnodes
   bind             *:5004
   mode             http
   default_backend  nodes
   option           forwardfor

backend nodes
   mode             http
   balance          roundrobin 
   server backend1 101.16.170.180:5004 check

答案1

如果没有 root 用户,则无法将 haproxy 绑定在端口 80 上。

贴出下面的命令:

sudo netstat -antp |egrep "5004|9000"

答案2

问题在于,你为 HAProxy 和应用服务器提供了相同的端口,让它们监听。每次只有一个进程可以使用一个端口。

因此,您需要决定要使用 HAProxy 监听哪个端口,以及要与应用程序服务器一起使用哪个端口。

http 协议的标准监听端口是 80,因此在您的frontend localnodes部分中您应该使用bind *:80。这要求您以 root 身份启动守护进程。

我建议您学习 TCP/IP 的基础知识以及当服务绑定到 TCP 端口以监听传入连接时的含义。

相关内容