赞
踩
下载zookeeper-3.4.14 并解压
tar zxvf zookeeper-3.4.14.tar.gz
mv zookeeper-3.4.14 /usr/local/
zookeeper集群至少需要3台服务器.否则会报如下错误
关闭防火墙
systemctl stop firewalld
复制conf文件夹下zoo_sample.cfg 并重命名为zoo.cfg
并修改成如下配置
centos7 安装zookeeper集群
下载zookeeper-3.4.14 并解压 tar zxvf zookeeper-3.4.14.tar.gz mv zookeeper-3.4.14 /usr/local/zookeeper
zookeeper集群至少需要3台服务器.否则会报如下错误
关闭防火墙 systemctl stop firewalld
复制/usr/local/zookeeper /conf文件夹下zoo_sample.cfg 并重命名为zoo.cfg 并修改成如下配置
创建data和log文件夹 mkdir -p /usr/local/zookeeper-3.4.14/data mkdir -p /usr/local/zookeeper-3.4.14/logs
根据server的ip对应的值在data下创建一个myid文件 在172.16.129.83上执行 cat >/usr/local/zookeeper-3.4.14/data/myid<<EOF 1 EOF
在172.16.129.86上执行 cat >/usr/local/zookeeper-3.4.14/data/myid <<EOF 2 EOF
其余机子也是如此 注意myid 如果是如下所示会报zoo.cfg错误 注意空行
启动zookeeper /usr/local/zookeeper-3.4.14/bin/zkServer.sh start 这样启动之后 发现zookeeper 显示启动成功但是查看status 是不正常启动 /usr/local/zookeeper-3.4.14/bin/zkServer.sh 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 解决
大佬原文 https://blog.csdn.net/u014284000/article/details/74508963#commentBox |
这样启动之后 发现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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。