目的是配三台zookeeper
首先 检查jdk java -version 这个很重要
我一般是把应用放在/export/servers/这个文件夹下
cd /export/servers/
rz上传文件
tar -xvf zookeeper-3.4.6.tar.gz 解压缩
将conf下 的zoo_sample.cfg 改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
建立mkdir /export/servers/zookeeper-3.4.6/data
修改zoo.cfg
clientPort=2181 这个看需求 一般都不改 然而我为了麻烦
dataDir=/export/servers/zookeeper-3.4.6/data 这个配成刚才建的data文件夹
然后
在/export/servers/zookeeper-3.4.6/data下创建myid 在其中输入
echo 1 >myid
最后在zoo.cfg加入(刚才忘了),加载最下方即可
server.1=192.168.160.171:2881:3881
server.2=192.168.160.172:2882:3882
server.3=192.168.160.173:2883:3883
端口可以都设为2881:3881 我是为了麻烦所以改成不一样的了 2881是用来提供服务的,3881是zookeeper之间相互联系的
都配置好了就发送到其他机器吧
发送到别的虚拟机(注意目录)
scp /export/servers/zookeeper-3.4.6 [email protected]:/export/servers/
其他机器上修改配置
conf下zoo.cfg中2881 改为2882或者其他
还有/export/servers/zookeeper-3.4.6/data下的myid也要改成2和3什么的
然后
./zkServer.sh start 启动
./zkServer.sh status 查看状态
最后注意配置防火墙
我这省事就直接临时关了
关闭防火墙 centos7 是 systemctl stop firewalld.service(这是临时关闭请注意)
如果没有关会报错
2017-11-24 20:22:52,110 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@382] - Cannot open channel to 2 at election address /192.168.160.172:3882
java.net.NoRouteToHostException: 没有到主机的路由 (Host unreachable)
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:368)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:341)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:449)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:430)
at java.lang.Thread.run(Thread.java:748)
完事了