zookeeper下载稳定版
官网:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/
csdn:http://download.youkuaiyun.com/detail/shuai825644975/9755163
zookeeper集群里有三种角色:leader、follower、observer
zookeeper需要在所有的服务节点中选举出一个leader,然后让这个leader来负责管理集群。其它的服务节点则是follower。当leader故障时,zookeeper会从follower从重新选举一个leader出来管理集群。
observer角色和follower一样,但是不参与leader的选举,只是被动接收选举结果
配置参考:http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
1、配置目录结构
三个服务节点文件夹,server1、server2、server3(因为需要选举,防止出现服务节点投票数一致的情况,节点数最少2n+1)
每个文件夹下data、logs和zookeeper的解压包
2、修改zoo.cfg配置文件
zookeeper的配置文件在zookeeper-3.4.9/conf/目录下
文件默认为zoo_sample.cfg,cp一份,修改名称为zoo.cfg,并修改文件
zoo.cfg文件属性
#zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000
#集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=10
#集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=5
#zookeeper保存数据的目录,默认情况下,zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/usr/java/zookeeper/server1/data
#zookeeper保存日志文件的目录。
dataLogDir=/usr/java/zookeeper/server1/logs
#客户端连接 zookeeper 服务器的端口,zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
#server.N=[host]:[port_A]:[port_B]
#N 服务编号,对应dataDir配置路径下的myid文件(myid需要自己创建,并对应N赋唯一值);port_A 表示改服务节点和集群中leader通信的端口;port_B 表示当集群中leader异常后,其它服务节点会通过该节点互相通信选举出新的leader
server.1=XXX.XX.XX.XXX:2888:3888
server.2=XXX.XX.XX.XXX:2889:3889
server.3=XXX.XX.XX.XXX:2890:3890
3、配置myid
在dataDir配置路径下,创建myid文件,并赋唯一值1(1对应zoo.cfg中server.N的N值)
----------------------------------------------------------
2、3步骤操作完成后,再分别修改server2、server3节点的zoo.cfg文件(一般情况下只需要修改clientPort、dataDir、dataLogDir的value;server.N=XXX则和server1节点的配置保持一致);分别在server2/data/myid赋值2,server3/data/myid赋值3
4、分别启动zookeeper各服务节点
启动命令在zookeeper3.4.9/bin/目录下
当所有节点服务启动后,可以通过./zkServer.sh status查看节点角色
连接服务./zkCli.sh -server [host]:[port]
zookeeper保存数据的目录,默认情况下,zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/usr/java/zookeeper/server1/data