下载 zookeeper-3.3.6.tar.gz 。下载地址:点击下载
准备三台服务器 :192.168.xx.128,192.168.xx.129,192.168.xx.130
分别拷贝到zookeeper-3.3.6.tar.gz 到/usr/目录下
解压 tar -zxvf zookeeper-3.3.6.tar.gz
三、进入到conf目录
四、拷贝zoo_samle.cfg为zoo.cfg
五、编辑zoo.cfg文件
修改为:
六、设置环境变量
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。
这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。
#在192.168.xx.128服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下
echo "1" > /usr/local/zookeeper/data/myid
#在192.168.xx.129服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.2保持一致,如下
echo "2" > /usr/local/zookeeper/data/myid
#在192.168.xx.130服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.3保持一致,如下
echo "3" > /usr/local/zookeeper/data/myid
到此 配置结束
然后 同时进入 /usr/zookeeper-3.3.6/bin/ 目录下 启动 ./zkServer.sh start
JMX enabled by default
Using config: /usr/zookeeper-3.3.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node0 zookeeper-3.4.6]$ ./bin/zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper-3.6.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper-3.6.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
start 正常,但是查看状态时,出现如下错误:
Error contacting service. It is probably not running.
停掉ZK,然后以start-foreground方式启动,查看启动日志:
即:zkServer.sh start-foreground ,又出现如下错误:
从错误信息来看,是端口被使用了,但我用netstat -lntup是没被使用的,再用 lsof -i:2181,发现了2181端口果然被占用了
[root@ programfiles]# lsof -i:2181
是java的一个进程 占用了端口(这里忘了截图了)。
再次修改 conf/zoo.cfg 将端口号 2181 修改为 21810,重新启动
java.net.NoRouteToHostException: 没有到主机的路由
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:712)
at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:111)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622)
又出现了如下错误,真是一部一个坑。
检查了一下防火墙的状态,将其关闭:
centos7.0(默认是使用firewall作为防火墙,如若未改为iptables防火墙,使用以下命令查看和关闭防火墙)
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service
重新启动:
zkServer.sh start-foreground
java.net.ConnectException: 拒绝连接
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:712)
at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:111)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:371)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:404)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:688)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:622)
竟然还有错误?!!百度到一片文章,后说需要修改 /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
将第一行注释掉,再次启动:
zkServer.sh start
启动成功!查看一下 状态
zkServer.sh status
[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower
follower
[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: leader
leader
[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower
follower
至此,zookeeper集群搭建完毕,感觉所有的坑全踩了一遍。对于一个刚刚接触linux 不久的菜鸟来说真的很残忍。希望能够帮到大家!
问题最后解决看的是这篇文章,http://blog.csdn.net/pein_zero/article/details/51855244
修改端口后 客户端客户端 访问:./zkCli.sh -timeout 5000 -server 127.0.0.1:21810