美文网首页
端口冲突引起的cannot bind socket [0.0.0

端口冲突引起的cannot bind socket [0.0.0

作者: 阿乐_822e | 来源:发表于2020-10-28 12:46 被阅读0次

    在配置PXC+keepalived+haproxy高可用群集时,由于资源所限,将keepalived与haproxy安装在了pxc0/pxc1两个节点上。
    通过vip连接mysql时提示 Too many connections 。检查keepalived服务正常,但发现haproxy服务启动失败。提示:Starting frontend pxc-onenode-front: cannot bind socket [0.0.0.0:3306]
    网上比较多的解决方案是修改/etc/sysctl.conf 文件,添加net.ipv4.ip_nonlocal_bind = 1 与net.ipv4.ip_forward = 1(内核转发)
    但修改后仍然无法启动。
    后来观察haproxy配置文件时发现,在同一台机上mysql已经打开了3306端口,这时再去监听3306端口,必然会引起冲突,导致haproxy无法启动。
    解决办法:将3306改为其它任何一个空闲端口即可

    $ vi /etc/haproxy/haproxy.cfg
    ......
    frontend pxc-onenode-front  # 在这个前端监听的定义中,表示监听3316端口的请求,再转发到“pxc-onenode-back”这个后端所定义的ip池中,原来绑定的是3306,当然会与mysql冲突了
    bind *:3316
    mode tcp
    default_backend pxc-onenode-back
    ......
    backend pxc-onenode-back  # 对应前端pxc-onenode-front
    mode tcp
    balance leastconn
    option httpchk
    server pxc_node0 192.168.53.153:3306 check port 9200 inter 12000 rise 3 fall 3
    server pxc_node1 192.168.53.154:3306 check port 9200 inter 12000 rise 3 fall 3 backup
    server pxc_node2 192.168.53.155:3306 check port 9200 inter 12000 rise 3 fall 3 backup
    

    故障原因是:原来haproxy用的是两台独立的主机,监听3306当然没问题,现在被移到了跑着mysql服务的机器上,但绑定的监听端口没有变,就发生冲突了。
    PS: 这时候要提醒程序员数据库的连接端口改变了,比较,用mysql连接的话,要用:mysql -h 你的vip -P3316 -uroot -pXXXX
    -P:端口号
    -p: 密码

    相关文章

      网友评论

          本文标题:端口冲突引起的cannot bind socket [0.0.0

          本文链接:https://www.haomeiwen.com/subject/rvvqvktx.html