1.下载
从hust的镜像站下载
地址:
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz
2.然后解压、移动到自己喜欢的位置就行
我是放到 /usr/zookeeper下面
3.配置(需要配置好Java环境)
1)修改配置文件
cd /usr/zookeeper/conf
cp zoo_sample.cfg zoo1.cfg
然后使用vim编辑zoo1.cfg
需要修改 dataDir,添加dataLogDir,添加server.0、server.1、server.2(假设集群有3个节点)
我的修改如下:
dataDir=/usr/zookeeper/data/1
clientPort=2181
dataLogDir=/usr/zookeeper/log/1
server.0=0.0.0.0:2287:3387
server.1=localhost:2288:3388
server.2=localhost:2289:3389
之后重复复制和编辑操作,创建zoo2.cfg、zoo3.cfg
把dataDir分别改为 /usr/zookeeper/data/2 、 /usr/zookeeper/data/3
clientPort分别改为 2182 2183
dataLogDir分别改为 /usr/zookeeper/log/2、 /usr/zookeeper/log/3
zoo2的server.1需要改成0.0.0.0:2288:3388,zoo3同理修改server.2
2)创建myid
使用mkdir -p 命令,创建/usr/zookeeper/data及子目录1、2、3
然后使用 echo "0" > /usr/zookeeper/data/1/myid 创建server.0的id文件,另两个目录同理
3.运行
命令格式:
zkServer.sh start zoo.cfg
这一步开始遇到问题了
我本地的WSL环境,用脚本启动不知为何总是报错,如下:
[2018-11-08 08:57:19,707] INFO Resolved hostname: localhost to address: localhost/127.0.0.1 (org.apache.zookeeper.server.quorum.QuorumPeer)
[2018-11-08 08:57:20,709] WARN Cannot open channel to 1 at election address localhost/127.0.0.1:3388 (org.apache.zookeeper.server.quorum.QuorumCnxManager)
java.net.ConnectException: Connection refused (Connection refused)
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:957)
[2018-11-08 08:57:20,714] INFO Resolved hostname: localhost to address: localhost/127.0.0.1 (org.apache.zookeeper.server.quorum.QuorumPeer)
[2018-11-08 08:57:20,714] INFO Notification time out: 400 (org.apache.zookeeper.server.quorum.FastLeaderElection)
逐个启动,输出倒是没什么问题,但是用 zkServer.sh status 命令仍显示无法连接,jps也没有zookeeper的进程,说明没启动成功,如果用zoo_sample.cfg单机模式启动是正常的,搞不懂什么问题
于是换服务器环境重试一边,没遇到任何问题就成功了
ubuntu@VM-0-6-ubuntu:/usr/zookeeper/data$ jps
29124 QuorumPeerMain
29176 QuorumPeerMain
29291 Jps
29244 QuorumPeerMain
使用 zkCli.sh -server 127.0.0.1:2181 连接服务器,可以成功连接
4.遇到的其他奇怪问题:
1)明明安装了Java,仍然报错:
Error: JAVA_HOME is not set and could not be found.
在 /etc/profile 已经export了JAVA_HOME和PATH,直接在终端使用export命令也能看到值
使用java -version也没问题,最奇怪的是脚本的输出里能看到,实际上脚本已经读取到JAVA_HOME
输出了类似 java:/usr/java/bin/java 的内容
在 zkEnv.sh 显式export JAVA_HOME也没用
无解
2)zkEnv.sh 报各种格式错误
比如说提示某一行的括号错误,应该是"fi"之类的
也是无解,而且现在还不能复现了。。。