Zookeeper-3.4.9安装配置

一、官方地址

https://zookeeper.apache.org/

二、Zookeeper下载安装

下载地址:http://apache.claz.org/zookeeper/zookeeper-3.4.9/

下载成功后,执行命令,完成解压缩

tar -xvf zookeeper-3.4.9.tar.gz

三、Zookeeper配置

Zookeeper推荐使用集群模式,由于服务器有限,在这里采用伪集群模式,即在同一台服务器上,启动两个或多个Zookeeper进程实例。

第一台Zookeeper实例配置

首先配置第一个Zookeeper实例,进入zookeeper下conf目录,配置zoo.cfg文件。配置信息如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/yqshi/kafka/zookeeper-3.4.9/data/data
dataLogDir=/home/yqshi/kafka/zookeeper-3.4.9/data/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=172.18.55.21:2888:3888
server.2=172.18.55.21:2889:3889 

参数说明:

  • tickTime:zookeeper中使用的基本时间单位, 毫秒值.
  • initLimit:zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长同步等待初始化时间. 此时该参数设置为10, 说明时间限制为10倍tickTime, 即10*2000=20000ms=20s.
  • syncLimit:该参数配置Zookeeper集群中leader实例和follower实例之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即10000ms=10s.
  • dataDir:数据目录. 可以是任意目录。我设置为/home/yqshi/kafka/zookeeper-3.4.9/data/data,即当前zookeeper安装目录下的/data/data目录。
  • dataLogDir:log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置。我设置为/home/yqshi/kafka/zookeeper-3.4.9/data/log,即当前zookeeper安装目录下的/data/log目录。
  • clientPort:监听client连接的端口号.在伪集群模式中,各个实例的clientPort必须不同。但在集群模式中,建议相同,均配置为2181。
  • server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同,若集群模式,推荐使用相同的port.

在伪集群模式和集群模式中,需要在刚刚设置的dataDir目录下,创建一个myid文件,输入对应唯一标识数。如刚刚设置的Zookeeper为集群中第一台,即设置myid中值为1。该数字必须和zoo.cfg文件中的server.X中的X一一对应.

zookeeper_myid

第二台Zookeeper实例配置

按照同样的方式配置第二台Zookeeper实例。

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/yqshi/kafka/zookeeper-3.4.9_2/data/data
dataLogDir=/home/yqshi/kafka/zookeeper-3.4.9_2/data/log
# the port at which the clients will connect
clientPort=2182
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=172.18.55.21:2888:3888
server.2=172.18.55.21:2889:3889

可以看到,我又copy了一份zookeeper的安装目录,为/home/yqshi/kafka/zookeeper-3.4.9_2。

配置clientPort地址,server.1和server.2地址。若集群存在多台zookeeper实例,则继续增加server.x配置。

同样需要配置第二台Zookeeper实例dataDir下的myid。

四、Zookeeper启动

执行 sh bin/zkServer.sh satrt

五、Zookeeper使用

Zookeeper在使用上有以下几个基本命令

  • ls 查看结点路径(同linux的ls命令)
  • get 获取结点值
  • delete 删除结点(当前结点必须为子节点,无后续结点)
  • rmr 强制删除结点(当前结点可以为子节点,也可以为根结点,强制删除,不建议使用)

在Zookeeper中的连接客户端中,建议使用curator的客户端。

Zookeeper主要采用了监听者模式,即结点发生变化时,会推送给所有的监听者事件消息。

六、版权声明

转载请注明出处:https://shiyueqi.github.io/2017/04/27/Zookeeper-3.4.9安装配置/


Author: Yueqi Shi

Date: 2017-04-27 09:32:00 AM