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
2
3
#zookeeper ENV
export ZOOKEEPER_HOME=/usr/local/src/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#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
2
3
4
5
6
7
8
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/src/zookeeper/data
clientPort=2181
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
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**后,启动失败,此问题现象:

  1. 启动zk失败,但是在启动**#./zkServer.sh start**时,不会报错,正常显示。
  2. jps查询时,正常显示**#QuorumPeerMain**
  3. #./zkServer.sh status查询时,显示报错,报错信息如下:
报错信息
报错信息
  1. #./zkServer.sh stop关闭集群时,主节点无法关闭的报错

解决办法:

在zoo.cfg文件中,原本版本中,查询到的是zoo.cfg文件中无法识别ip地址,故写法为:

1
2
3
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

查询日志发现,报错信息为:

报错信息
报错信息

显示address already in use,那就考虑是否ip名无法识别,需要使用ip地址

故进行修改zoo.cfg中ip名为ip地址

1
2
3
server.1=192.168.100.3:2888:3888
server.2=192.168.100.4:2888:3888
server.3=192.168.100.2:2888:3888