前提:①Linux服务器(3台) ②已安装JDK ③安装路径:/usr/local/bin目录下
目前3.5.5版本启动会报:找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain, 因为3.5.5解压缩之后,zookeepr文件夹里面这个jar包没了(网友都有这问题,好像是解压缩之类的问题),此教程故由3.5.5降版本至3.4.14)
2021/06/15 发现 3.5.5 版本之后的,都没有这个 jar 包了,官网上下载的 tar.gz 也才 3.4M,3.4.14版本有34M多,估计是得自己编译这个jar包了吧。或者自己上传上去也可以?我没试。这句话仅供参考
1.官网下载ZooKeeper安装包
下载地址:https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
2.使用命令 rz 将ZooKeeper安装包上传至Linux服务器;
3.使用命令 tar -zxvf apache-zookeeper-3.4.14.tar.gz -C /usr/local/bin,解压缩tar.gz包至 /usr/local/bin 目录下
4.解压后可删除tar.gz包
5.进入源码 zookeeper-3.4.14目录下,可以删除 .txt 和 .md 结尾的文件 (命令:rm -rf *.txt *.md )
删除后目录如图所示:
6.接下来,cd conf,修改配置文件
conf目录下,有一个zoo_sample.cfg文件,该文件为示例文件,复制该文件,去掉sample即可(zookeeper只认zoo.cfg配置文件)
7.对zoo.cfg配置文件进行修改
8.将myid记录到数据文件夹(/tmp/zookeeper,如没有,需手动创建)中去(myid即为:上图②中1,2,3)
每一台服务器myid都不一样,则数据文件夹中记录的也都不一样
命令:mkdir -p /tmp/zookeeper(-p 递归创建)
echo 1 >> myid(将1写入192.168.204.201服务器myid文件中)
9.至此,第一台服务器zookeeper安装完毕
10.zookeeper集群安装开始
使用命令scp,将zookeeper的安装目录,发送至其他俩服务器(scp命令使用方法,请点击查看)
命令:scp -r /usr/local/lib/apache-zookeeper-3.4.14 [email protected]:/usr/local/lib
scp -r /usr/local/lib/apache-zookeeper-3.4.14 [email protected]:/usr/local/lib
将/tmp/zookeeper目录下的内容,也发送至其他俩服务器
scp -r /tmp/zookeeper [email protected]:/tmp
scp -r /tmp/zookeeper [email protected]:/tmp
11.进入192.168.204.202服务器,修改/tmp/zookeeper目录下的myid文件
echo 2 >> myid(将2写入192.168.204.202服务器myid文件中)
同理,将3写入192.168.204.203服务器中
echo 3 >> myid(将3写入192.168.204.203服务器myid文件中)
12.至此,zookeeper集群安装完毕
13.通过如下命令,启动zookeeper服务
./zkServer.sh start
在启动zookeeper服务之前,先关闭防火墙(或者允许指定开放端口访问(推荐)),未关闭防火墙会报如下错误:
java.net.NoRouteToHostException: 没有到主机的路由
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectAll(QuorumCnxManager.java:610)
at org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:838)
at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:958)
建议:生产上,不关闭防火墙,打开指定端口即可!!!
①通过如下命令,关闭防火墙(CentOS 6)
service iptables stop
②开放2888、3888端口
如何开放指定端口,请移步:Linux开放指定端口
14.端口开放完毕,使用如下命令,查看zookeeper服务开启状态
./zkServer.sh status
如下图可以看到:一主(leader)两从(follower)。这是通过选举机制产生的。
15.通过如下命令,可以关闭ZooKeeper服务
sh zkServer.sh stop 或./zkServer.sh stop
16.至此,ZooKeeper集群安装完毕
17.附:ZooKeeper常用命令
1. 启动ZK 服务:bin/zkServer.sh start
2. 查看ZK 服务状态:bin/zkServer.sh status
3. 停止ZK 服务:bin/zkServer.sh stop
4. 重启ZK 服务:bin/zkServer.sh restart
博主写作不易,来个关注呗
求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙
博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ