Zookeeper是针对分布式应用的高性能协调服务,是高效可靠的协同工作系统,提供的功能包括配置维护、名字服务、分布式同步、组服务等。Zookeeper的目标就是封装好复杂、易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper是hadoop的正式子项目,是Google的Chubby一个开源的实现。
一、安装zookeeper
这里拿zookeeper-3.4.11.tar.gz举例。
1) 解压安装包
创建目录:/opt/zookeeper
将zookeeper-3.4.11.tar.gz拷贝进去并解压。
tar -zxvf zookeeper-3.4.11.tar.gz
2) 添加ZK_HOME到环境变量
修改/etc/profile文件,添加如下内容:
export ZK_HOME=/opt/zookeeper/zookeeper-3.4.11
export PATH=$PATH:$ZK_HOME/bin
source /etc/profile
3) 修改配置文件
tickTime,这是个时间单位定量。比如tickTime=2000,这就表示在zookeeper里1 tick表示2000 ms,所有其他用到时间的地方都会用多少tick来表示。
比如 syncLimit = 2 就表示fowller与leader的心跳时间是2 tick=4s。
maxClientCnxns -- 对于一个客户端的连接数限制,默认是60,这在大部分时候是足够了。但是在我们实际使用中发现,在测试环境经常超过这个数,经过调查发现有的团队将几十个应用全部部署到一台机器上,以方便测试,于是这个数字就超过了。
minSessionTimeout, maxSessionTimeout -- 一般,客户端连接zookeeper的时候,都会设置一个session timeout,如果超过这个时间client没有与zookeeper server有联系,则这个session会被设置为过期(如果这个session上有临时节点,则会被全部删除,这就是实现集群感知的基础,后面的文章会介绍这一点)。但是这个时间不是客户端可以无限制设置的,服务器可以设置这两个参数来限制客户端设置的范围。
默认情况,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分别是4sec和40sec
集群模式配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
datalogDir=/opt/zookeeper/datalog
clientPort=2181
server.1=z1.y:2888:3888
server.2=z2.y:2888:3888
server.3=z3.y:2888:3888
minSessionTimeout=60000
maxSessionTimeout=180000
创建上面的两个目录
本地模式配置:
tickTime=2000
dataDir=/opt/zookeeper/data
clientPort=2181
4) 创建myid
集群模式下,需要在上面配置的dataDir目录下创建一个myid文件,编码格式为ANSI.内容为一个数字,该数字和server.x中的x数字相同.
如z1.y机器上,其内容为数字1
echo 1 > /opt/zookeeper-3.4.8/data/myid
如z2.y机器上,其内容为数字2
echo 2 > /opt/zookeeper-3.4.8/data/myid
如z3.y机器上,其内容为数字3
echo 3 > /opt/zookeeper-3.4.8/data/myid
二、Zookeeper的启动
1) 启动zookeeper
各机器上分别执行:zkServer.sh start
2) 查看zookeeper状态
zkServer.sh status
3) 停止zookeeper
zkServer.sh stop
4) 重启zookeeper
zkServer.sh restart
5) Jps查看进程
除了全盘zkServer.sh status检查是否成功外,还可以通过jps查看是否有QuorumPeerMain进程
注:集群的节点之间需要同步时间,相差不能超过30秒,启动的时间也不能超过30秒,否则会启动失败.