centos7安装zookeeper集群

下载zookeeper-3.4.14 并解压

复制conf文件夹下zoo_sample.cfg 并重命名为zoo.cfg

并修改成如下配置

 

tickTime=2000

dataDir=/usr/local/zookeeper-3.4.14/data

dataLogDir=/usr/local/zookeeper-3.4.14/logs

clientPort=2181

initLimit=5

syncLimit=2

 

server.1=172.16.129.83:2888:3888

server.2=172.16.129.86:2888:3888

server.3=172.16.129.207:2888:3888

server.4=172.16.129.6:2888:3888

server.5=172.16.129.32:2888:3888

server.6=172.16.129.14:2888:3888

 

 

这样启动之后 发现zookeeper 显示启动成功但是查看status 是不正常启动

 

查看端口发现3888并没有启动

2181是zookeeper客户端连接的端口,所以进程号32143启动起来的,监听37271端口,但是zookeeper没有配置这个端口,而是配置2888,3888端口,正常情况下作为follower的时候是3888端口监听中,用于选举leader通讯。出现这个情况不得而知。重新启动该进程,上面一个端口号在不断的变化。至此问题是找到了,就是服务端进程没有监听配置的3888端口,而是监听了随机端口导致其它服务器进程无法与之通讯,所以看到了这个异常。

 

 

后来找到了一篇大佬分析源码的文章,

https://blog.csdn.net/u014284000/article/details/74508963#commentBox

 

 

ip地址不是本机网卡

原因很简单,这是云服务器,云服务器采用虚拟化的技术,监听的网卡是属于物理网关的网卡,而虚拟化机内部自然没有这个网卡。

 

这个时候真正的原因找到了,解决办法就是让服务器进程监听0.0.0.0的ip地址,也就是监听所有网卡。

 

QuorumCnxManager.java

发现前边有一个listenOnAllIPs这个参数,如果他是true,那么问题就解决了。于是向上级跟踪。找到QuorumPeerConfig.java中

 

 

 

于是在zoo.cfg中添加了

quorumListenOnAllIPs=true 解决

 

 

tickTime=2000

dataDir=/usr/local/zookeeper-3.4.14/data

dataLogDir=/usr/local/zookeeper-3.4.14/logs

clientPort=2181

initLimit=5

syncLimit=2

#server.1=172.16.129.83:3888

#server.2=172.16.129.86:3888

#server.3=172.16.129.207:3888

#server.4=172.16.129.6:3888

#server.5=172.16.129.32:3888

#server.6=172.16.129.14:3888

quorumListenOnAllIPs=true

server.1=172.16.129.83:2888:3888

server.2=172.16.129.86:2888:3888

server.3=172.16.129.207:2888:3888

server.4=172.16.129.6:2888:3888

server.5=172.16.129.32:2888:3888

server.6=172.16.129.14:2888:3888

 

 

 

 

 

大佬原文

https://blog.csdn.net/u014284000/article/details/74508963#commentBox

猜你喜欢

转载自blog.csdn.net/xujiamin0022016/article/details/94654339