本文总结一下在Linux上Zookeeper的安装和配置
安装
在zookeeper官网上推荐的清华镜像地址下载对应版本的zk安装包,以最新版本3.5.6举例,这里记住要下载带-bin的包
如果下载不带-bin的包,启动zk时可能会报错Starting zookeeper ... FAILED TO START
查看日志会看到如下错误
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
配置
- 解压,进入conf目录拷贝配置文件
cp -a zoo_sample.cfg zoo.cfg
默认端口2181,可自行修改,如有需要可以修改dataDir路径
- bin/zkServer.sh start 启动zk服务
- bin/zkServer.sh status 查看zk状态
- bin/zkServer.sh stop 停止zk服务
- bin/zkCli.sh 进入zk客户端操作界面
伪集群搭建
伪集群指的是在一台物理机上搭建zk集群
-
linux上解压三份zookeeper到同一目录下
- 修改各自的配置文件zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper1
clientPort=2181
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
tickTime 一次心跳的时间,单位是毫秒
initLimit 初始follower和leader连接并同步数据的超时时间,如果在该时间内没有半数以上的follower连接并同步成功的话,leader会放弃,并重新选举
syncLimit 一个follower和leader同步的时间,该时间内没有完成同步,会被leader丢弃,连接到该follower的客户端会自动连接到其他节点
分别指定各自的dataDir和clientPort,都加入如下集群配置
initLimit和syncLimit的数字表示有几个心跳时间 n * tickTime
server.myid=hostname:port1:port2
myid代表集群机器的序号
hostname代表机器域名
port1端口代表集群间数据通信的端口
port2端口代表集群间进行leader选举的端口
因为是伪集群,所以各自的两个通信端口要不一样
注意:修改各自的客户端端口,可以是2181、2182、2183
同时修改各自的dataDir路径
- 增加myid文件
在三份zk的数据目录(dataDir)下,创建名为myid的文件,内容为各自的id(分别是1、2、3) - 分别启动三台zookeeper服务
- 查看状态,可以看到一台leader和两台follower,如果将leader服务关闭,集群将会重新选举leader