zookeeper 集群搭建使用(zookeeper本地集群节点配置)
欢迎大家关注我,我会不定期分享一些自己觉得比较好的文章给大家。
1.下载ZooKeeper
Index of /apache/zookeeper
2.直接解压
3.配置本地集群文件
分别在zookeeper的data目录下新建三个文件夹z1、z2、z3代表zookeeper三个节点:
- 每个z1、z2、z3文件夹下新建对应的zX.cfg配置文件,内容如下:
tickTime = 2000 dataDir = /Users/huleiwind/Documents/soft/zookeeper-3.4.12/data/z1/data/ clientPort = 2181 initLimit = 5 syncLimit = 2 server.1=127.0.0.1:2222:2223 server.2=127.0.0.1:3333:3334 server.3=127.0.0.1:4444:4445
每个目录唯一的区别是clientPort设置不同,可以分别设置为2181、2182、2183,目录如下图:
- 每个z1、z2、z3文件夹下分别建立data文件夹,子目录下只有一个文件myid,其中内容就是一个数字,
- 当服务器启动时,服务器通过配置文件中的data目录参数来查找data 目录的配置。它通过myId获得服务器ID,之后使用配置文件中server.n 对应的项来设置端口并监听。目录结构如下图:
4.分别启动各节点
分别执行指令:
# huleiwind @ localhost in ~/Documents/soft/zookeeper-3.4.12/bin [15:19:50] $ ./zkServer.sh start ../data/z1/z1.cfg # huleiwind @ localhost in ~/Documents/soft/zookeeper-3.4.12/bin [15:19:50] $ ./zkServer.sh start ../data/z1/z2.cfg # huleiwind @ localhost in ~/Documents/soft/zookeeper-3.4.12/bin [15:19:50] $ ./zkServer.sh start ../data/z1/z3.cfg
输出日志在:
/Users/huleiwind/Documents/soft/zookeeper-3.4.12/bin/zookeeper.out
它这个日志是会覆盖的,也就是当你自动z2时,z1的启动日志就没了….
当启动z1时,会发现报:
2018-05-23 15:20:41,252 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@584] - Cannot open channel to 2 at election address /127.0.0.1:3334 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-05-23 15:20:41,252 [myid:1] - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumPeer$QuorumServer@184] - Resolved hostname: 127.0.0.1 to address: /127.0.0.1 2018-05-23 15:20:41,253 [myid:1] - WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@584] - Cannot open channel to 3 at election address /127.0.0.1:4445 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)
不停的链接节点2、3,说明z1节点配置ok,再继续执行z1、z2的启动就行了。
5.使用zkCli.sh连接集群
我们使用zkCli.sh来访问集群:
# huleiwind @ localhost in ~/Documents/soft/zookeeper-3.4.12/bin [15:56:23] $ ./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
日志:
2018-05-23 16:08:23,931 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) JLine support is enabled 2018-05-23 16:08:23,997 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@878] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session 2018-05-23 16:08:24,005 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x100012a2de50001, negotiated timeout = 30000
可以看到连接到集群中的节点 127.0.0.1:2181,如果反复执行,会在三个节点中跳来跳去,也说明了集群的负载均衡能力。
除了连接串 外,客户端不用关心ZooKeeper服务由多少个服务器组成,这也是 ZooKeeper的优点之一。
到这里单台机器zookeeper的集群配置以及链接就结束了。
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com