1.解压zookeeper-3.4.10.tar.gz
tar zxvf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 zookeeper
- 进入zookeeper/conf文件夹中
cd zookeeper/
cp conf/zoo_sample.cfg conf/zoo.cfg
- 配置zookeeper的环境变量
echo -e "# append zk_env\nexport PATH=$PATH:/zookeeper/bin" >> /etc/profile
- 配置zoo.cfg文件内容
tickTime=2000
initLimit=10
syncLimit=5
dataLogDir=/root/zookeeper/logs
dataDir=/root/zookeeper/data
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1= 192.168.0.197:2888:3888
server.2= 192.168.0.107:2888:3888
server.3= 192.168.0.94:2888:3888
配置文件说明
tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。
- 进入zookeeper文件夹中相关目录,新建logs和data文件夹
mkdir logs
nkdir data
- 在每个节点的zookeeper/data文件夹中新建myid,分别对应A(server.A=B:C:D)
如192.168.0.197服务器上面myid文件,A为1,则设置值为1,同时与zoo.cfg文件里面的server.1保持一致,剩下的服务器一样 - 进入zookeeper/bin分别启动
[root@192 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@192 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/bin/../conf/zoo.cfg
Mode: follower
集群截图