下载地址:http://zookeeper.apache.org/
安装前准备
(1)安装JDK
(2)拷贝zookeeper到linux下
分布式安装部署
1.集群规划
在test221,test222,test223上部署zookeeper
2.解压安装
1)解压
tar -axvf zookeeper-3.4.10.tar.gz
2)创建data/zkData目录
在/usr/local/zookeeper-3.4.10/这个目录上创建data/zkData文件夹
mkdir -p data/zkData
3)将zoo_sample.cfg重命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
3.配置zoo.cfg文件
1)配置
dataDir=/usr/local/zookeeper-3.4.10/data/zkData
增加如下配置,红色配置是你自己的主机名,注意修改
#######################cluster##########################
server.1=test221:2888:3888
server.2=test222:2888:3888
server.3=test223:2888:3888
2) 配置参数解读
tickTime:通信心跳数,Zookeeper服务器心跳时间,单位毫秒,Zookeeper使用的基本时间,服务器之间或客户端与服
务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。它用于心跳机制,并且
设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
initLimit:LF初始通信时限,集群中的follower跟随者服务器(F)与leader领导者服务器(L)之间初始连接时能容忍的最多心
跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。投票选举新leader的初始化时
间,Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在
initLimit时间内完成这个工作。
syncLimit:LF同步通信时限,集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,
Leader认为Follwer死掉,从服务器列表中删除Follwer。在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如
通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为
这个F已经不在线了。
dataDir:数据文件目录+数据持久化路径,保存内存数据库快照信息的位置,如果没有其他说明,更新的事务日志也保存
到数据库。
clientPort:客户端连接端口,监听客户端连接的端口
Server.A=B:C:D。
A是一个数字,表示这个是第几号服务器;
B是这个服务器的ip地址;
C是这个服务器与集群中的Leader服务器交换信息的端口;
D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选
举时服务器相互通信的端口。集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A
的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。
4.集群操作
1)在/usr/local/zookeeper-3.4.10/data/zkData目录下创建一个myid的文件
2)编辑myid文件
在文件中添加与server对应的编号:如1
3)将配置好的zookeeper拷贝到其他集群上
xsync zookeeper-3.4.10/
4)修改对应的myid
5)分别启动zookeeper
[root@test221zookeeper-3.4.10]# bin/zkServer.sh start
[root@test222zookeeper-3.4.10]# bin/zkServer.sh start
[root@test223zookeeper-3.4.10]# bin/zkServer.sh start
6)查看状态
7)问题
如果出现上边问题那么可能是你的zoo.cfg文件没有配置好或者其他的节点没有启动