我是靠谱客的博主 无限大神,最近开发中收集的这篇文章主要介绍java连接zookeeper集群_Zookeeper集群环境搭建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

所谓Zookeeper的伪分布式搭建,就是在同一台机器上的不同端口,启动多个zookeeper Server实例,并通过多个配置文件来实现Server之间的通信。

新建以下目录和文件:[root@www zookeeper-3.4.5-cdh5.4.7]# tree $ZOOKEEPER_HOME/pseudo_conf/

/usr/local/zookeeper-3.4.5-cdh5.4.7/pseudo_conf/

├── zk1

│   ├── data

│   │   └── myid

│   └── zk1.cfg

├── zk2

│   ├── data

│   │   └── myid

│   └── zk2.cfg

└── zk3

├── data

│   └── myid

└── zk3.cfg

创建脚本mkdir $ZOOKEEPER_HOME/pseudo_conf

mkdir $ZOOKEEPER_HOME/pseudo_conf/zk1

mkdir $ZOOKEEPER_HOME/pseudo_conf/zk2

mkdir $ZOOKEEPER_HOME/pseudo_conf/zk3

mkdir $ZOOKEEPER_HOME/pseudo_conf/zk1/data

mkdir $ZOOKEEPER_HOME/pseudo_conf/zk2/data

mkdir $ZOOKEEPER_HOME/pseudo_conf/zk3/data

touch $ZOOKEEPER_HOME/pseudo_conf/zk1/data/myid

touch $ZOOKEEPER_HOME/pseudo_conf/zk2/data/myid

touch $ZOOKEEPER_HOME/pseudo_conf/zk3/data/myid

echo 1 > $ZOOKEEPER_HOME/pseudo_conf/zk1/data/myid

echo 2 > $ZOOKEEPER_HOME/pseudo_conf/zk2/data/myid

echo 3 > $ZOOKEEPER_HOME/pseudo_conf/zk3/data/myid

touch $ZOOKEEPER_HOME/pseudo_conf/zk1/zk1.cfg

touch $ZOOKEEPER_HOME/pseudo_conf/zk2/zk2.cfg

touch $ZOOKEEPER_HOME/pseudo_conf/zk3/zk3.cfg

zk1.cfgtickTime=2000

initLimit=10

syncLimit=5

dataDir=./data

clientPort=2181

server.1=127.0.0.1:2222:2223

server.2=127.0.0.1:3333:3334

server.3=127.0.0.1:4444:4445

zk2.cfgtickTime=2000

initLimit=10

syncLimit=5

dataDir=./data

clientPort=2183

server.1=127.0.0.1:2222:2223

server.2=127.0.0.1:3333:3334

server.3=127.0.0.1:4444:4445

启动zk1cd $ZOOKEEPER_HOME/pseudo_conf/zk1

#第一个参数值可以使start/stop  第二个参数指的是配置文件的配置

/usr/local/zookeeper-3.4.5-cdh5.4.7/bin/zkServer.sh start ./zk1.cfg

因为我们设置了集群中有3台机器,现在只启动了其中一台,因为Zookeeper目前还是不可以用的,

查看当前目录下的zookeeper.out文件,有类似以下内容... [myid:1] - INFO [QuorumPeer[myid=1]/...:2181:QuorumPeer@670] - LOOKING

... [myid:1] - INFO [QuorumPeer[myid=1]/...:2181:FastLeaderElection@740] -

New election. My id = 1, proposed zxid=0x0

... [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection@542] -

Notification: 1 ..., LOOKING (my state)

... [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@368] - Cannot

open channel to 2 at election address /127.0.0.1:3334

Java.net.ConnectException: Connection refused

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)

可以看到zk1尝试连接其他的zookeeper server,但是由于其他的都没启动,所以连接失败。

启动zk2cd $ZOOKEEPER_HOME/pseudo_conf/zk2

#第一个参数值可以使start/stop  第二个参数指的是配置文件的配置

/usr/local/zookeeper-3.4.5-cdh5.4.7/bin/zkServer.sh start ./zk2.cfg

查看zk2的启动日志... [myid:1] - INFO [QuorumPeer[myid=1]/...:2181:QuorumPeer@738] -

FOLLOWING

... [myid:1] - INFO [QuorumPeer[myid=1]/...:2181:ZooKeeperServer@162] -

Created server ...

... [myid:1] - INFO [QuorumPeer[myid=1]/...:2181:Follower@63] - FOLLOWING

- LEADER ELECTION TOOK - 212

说明zk1是follower。

虽然我们只启动了2个zk实例,但是由于已经超过集群总数的一半(3个当中启动了2个),所以此时服务已经可以用使用了。

此时我们要使用zkCli.sh去连接ZK服务。虽然zk3还没有启动,但是服务现在已经可以使用的,所以我们可以去连接,在zk3没有启动的情况下,去连接ZK服务,可以帮助我们更好的了解zookeeper的一些特点。${ZOOKEEPER_HOME}/bin/zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

启动zkCli时,控制台打印出类似以下内容:Socket connection established, initiating session, client: /127.0.0.1:42939, server: localhost/127.0.0.1:2182

说明当前连接的是zk2,如果停止zkCli,再启动zkCli,重复几次这样的操作。我们会看到客户端连接连接的端口号在zk1(2181)和zk2(2182)之间切换,如果连接了zk3(2183),就会提示连接失败信息,并自动尝试去连接其他的server。

最后

以上就是无限大神为你收集整理的java连接zookeeper集群_Zookeeper集群环境搭建的全部内容,希望文章能够帮你解决java连接zookeeper集群_Zookeeper集群环境搭建所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部