在百度上基本能百度一大片的安装教程,为啥我还要写呢?不难发现很多博客讲得很好。但是有些细节地方还是欠缺说明。所以,这里参考了一些大牛的博客,整理的一篇zookeeper安装配置集群的博客。
官网:http://zookeeper.apache.org/releases.html
下载:http://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.8/
版本:zookeeper-3.4.8.tar.gz(可根据自己需求下载相应的版本。这里只是一个使用案例,现在已经有3.4.10了以及3.5.x的beta版)
linux上安装jre可以参照之前的一篇文章,linux(centos)系统配置安装jdk。如果已经安装则忽略该步骤。
#mkdir /zookeeper/
#tar -zxvf zookeeper-3.4.8.tar.gz
#mv zookeeper-3.4.8 /zookeeper/server1
#cd /zookeeper/server1/conf/
#vi zoo.cfg
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/zookeeper/server1/data
dataLogDir=/zookeeper/server1/log
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
说明:这里我要在同一台机器上配置3台server所以这配置了三条server信息。注意保证配置的端口未被占用。
#mkdir -p /zookeeper/server1/data
#mkdir -p /zookeeper/server1/log
#cd /zookeeper/server1/data
#echo 1>myid
好了到这里第一台的配置基本完成了。
#cp -r /zookeeper/server1 /zookeeper/server2
#cp -r /zookeeper/server1 /zookeeper/server3
注意修改2和3的配置文件zoo.cfg,修改的地方是clientPort=2181分别修改成,修改的地方是clientPort=2182,,修改的地方是clientPort=2183
配置清单:
server1-->zoo.cfg:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/zookeeper/server1/data
dataLogDir=/zookeeper/server1/log
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
server2-->zoo.cfg:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/zookeeper/server2/data
dataLogDir=/zookeeper/server2/log
clientPort=2182
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
server3-->zoo.cfg:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/zookeeper/server3/data
dataLogDir=/zookeeper/server3/log
clientPort=2183
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
server1 ->./data/myid
1
server2 ->./data/myid
2
server3 ->./data/myid
3
注意:myid一定要修改
#cd /zookeeper/server1/bin
#./zkServer.sh start
查看日志内容
vi /zookeeper/server1/bin/zookeeper.out
可以看到类似以下错误信息
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:381)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:354)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)
at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)
at java.lang.Thread.run(Thread.java:748)
2017-08-06 15:42:40,542 [myid:1] - INFO [WorkerSender[myid=1]:QuorumPeer$QuorumServer@149] - Resolved hostname: 127.0.0.1 to address: /127.0.0.1
2017-08-06 15:42:40,542 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 3 at election address /127.0.0.1:3890
这是因为启动的时候zookeeper去找其他两台服务了,其他两台服务还没启动所以链接失败。
#cd /zookeeper/server2/bin
#./zkServer.sh start
可以看到错误信息比第一台启动的时候要少
#cd /zookeeper/server3/bin
#./zkServer.sh start
观察第三台的启动日志,已经没有错误。说明已经正常集群了。接下来将进行简单的测试
提示:启动命令为./zkServer.sh start,默认读取的conf目录下的zoo.cfg如果需要自己指定配置文件路径则为./zkServer.sh start pathtoyourcfgFile
随便进入一个zk目录,连接一个server测试。
#cd /zookeeper/server1/bin
#.zkCli.sh -server 127.0.0.1:2181
如果你要连接别的服务器,请指定具体的IP地址。
几个zookeeper基本命令说明:
下面是几个基本命令操作使用:
WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 1] create /zk "xqlee.com"
Created /zk
[zk: 127.0.0.1:2181(CONNECTED) 2] get /zk
xqlee.com
cZxid = 0x300000003
ctime = Sun Aug 06 15:55:17 PDT 2017
mZxid = 0x300000003
mtime = Sun Aug 06 15:55:17 PDT 2017
pZxid = 0x300000003
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 10
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 3] set /zk "blog.xqlee.com"
cZxid = 0x300000003
ctime = Sun Aug 06 15:55:17 PDT 2017
mZxid = 0x300000004
mtime = Sun Aug 06 15:55:36 PDT 2017
pZxid = 0x300000003
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 14
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 4] get /zk
blog.xqlee.com
cZxid = 0x300000003
ctime = Sun Aug 06 15:55:17 PDT 2017
mZxid = 0x300000004
mtime = Sun Aug 06 15:55:36 PDT 2017
pZxid = 0x300000003
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 14
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 5] ls /
[zk, zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 6] delete /zk
[zk: 127.0.0.1:2181(CONNECTED) 7] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 8]
到这里zookeeper的安装配置基本讲完,后面讲讲解Java中如何调用zookeeper
http://blog.xqlee.com/article/291.html