Zookeeper集群搭建
解压文件
#tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/src/
解压文件到 /usr/local/src/ 目录下
修改名字
#mv zookeeper-3.4.5.tar.gz zookeepper
修改名字,方便后期配置
配置环境变量
#vi /etc/profile
1 | #zookeeper ENV |
#sourc /etc/profile
使文件生效
集群配置
@新建data文件
#cd /usr/local/src/zookeeper
进入zookeeper文件夹
#mdkir data
新建data文件夹
@zoo.cfg
#cd /usr/local/src/zookeeper/conf
进入zookeeper下的conf文件夹
#cp zoo_sample.cfg zoo.cfg
复制样本文件进行修改
修改内容如下,注意专注一下五个参数,其中dataDir中的地址为前一步中在zookeeper下建立的
1 | tickTime=2000 |
name | 含义 |
---|---|
tickTime | tick翻译成中文的话就是滴答滴答的意思,连起来就是滴答滴答的时间,寓意心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。 |
initLimit | 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。 |
syncLimit | 集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。 |
dataDir | 该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。 |
clientPort | 客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。 |
@写入节点信息
#cd /usr/local/src/zookeeper/data
进入新建的data文件夹中
(当然这一步最好先复制后再进行,以免在分节点中没有节点信息)
使用echo语句把节点信息1、2、3分别写入三个节点的data目录中
在master节点中
#echo 1 > myid
在slave1节点中
#echo 2 > myid
在slave2节点中
#echo 3 > myid
拷贝环境
#scp -r /usr/local/src/zookeeper slave1:/usr/local/src/
#scp -r /usr/local/src/zookeeper slave2:/usr/local/src/
启动集群
#cd /usr/local/src/zookeeper/bin
进入到zookeeper的bin目录下
#./zkServer.sh start
启动zookeeper
#./zkServer.sh status
查看zookeeper状态
#./zkCli.sh
启动Cli,连接到zookeeper服务器
#./zkServer.sh stop
停止zookeeper服务器
关于Zookeeper的报错信息
问题一
关于zookeeper的配置,由于没有过多的配置因素,在检查报错信息时,只能通过排查日志文件来进行报错的修改,目前出现的问题一是zookeeper无法启动,在输入**#./zkServer.sh start**后,启动失败,此问题现象:
- 启动zk失败,但是在启动**#./zkServer.sh start**时,不会报错,正常显示。
- jps查询时,正常显示**#QuorumPeerMain**
- #./zkServer.sh status查询时,显示报错,报错信息如下:

- #./zkServer.sh stop关闭集群时,主节点无法关闭的报错
解决办法:
在zoo.cfg文件中,原本版本中,查询到的是zoo.cfg文件中无法识别ip地址,故写法为:
1 | server.1=master:2888:3888 |
查询日志发现,报错信息为:

显示address already in use,那就考虑是否ip名无法识别,需要使用ip地址
故进行修改zoo.cfg中ip名为ip地址
1 | server.1=192.168.100.3:2888:3888 |