前言
zookeeper 是分布式应用程序的分布式开源协调服务。它公开了一组简单的原语,分布式应用程序可以在这些原语的基础上实现更高级别的同步、配置维护、组和命名服务。
zookeeper应用广泛,作为一些框架的基础,例如kafka,hadoop-ha。
本文主要介绍了zookeeper的单台、集群搭建。
环境准备
软件版本
zookeeper-3.8.0
centos 7
假设你的环境已经:
关闭防火墙
配置好了jdk1.8的环境
修改了ip映射
修改了主机名
zookeeper-3.8.0 官网安装包下载链接
https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
把 apache-zookeeper-3.8.0-bin.tar.gz 安装包拷贝至 /root/tools 目录(这个目录可以自行设定),

解压至当前目录:
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
编辑 profile文件:
vi /etc/profile
- # 添加以下内容
- export ZOOKEEPER_HOME=/root/tools/apache-zookeeper-3.8.0-bin
- export PATH=$PATH:$ZOOKEEPER_HOME/bin
保存并生效:
source /etc/profile
进入conf目录: cd /root/tools/apache-zookeeper-3.8.0-bin/conf
配置目录中没有zoo.cfg,使用zoo_sample.cfg复制一个: cp zoo_sample.cfg zoo.cfg
编辑 zoo.cfg 文件(重要):
#用于计算的时间单元,单位为毫秒。比如session超时:N* tickTime。
tickTime=2000
#用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示。
initLimit=10
#用于集群,master主节点与从节点之间发送消息,请求和应答时间长度,超过一定的时间从节点就会被抛弃。(心跳机制)
syncLimit=5
#必须配置,比如用来存储事务文件的数据等。
dataDir=/data/zookeeper/data
#日志目录,如果不配置会和dataDir公用
dataLogDir=/data/zookeeper/log
#连接服务器的端口,默认2181
clientPort=2181
#单个client与单台server之间的连接数的限制,是ip级别的,默认是60。假设设置为0。那么表明不作不论什么限制。请注意这个限制的使用范围,不过单台client机器与单台ZKserver之间的连接数限制,不是针对指定clientIP,也不是ZK集群的连接数限制,也不是单台ZK对全部client的连接数限制。
maxClientCnxns=1200
#这个參数和上面的參数搭配使用,这个參数指定了须要保留的文件数目
autopurge.snapRetainCount=10
# 3.4.0及之后版本号,ZK提供了自己主动清理事务日志和快照文件的功能,这个參数指定了清理频率。单位是小时。须要配置一个1或更大的整数,默认是0。表不开启自己主动清理功能
autopurge.purgeInterval=24
wq!保存并退出文件。
cd /root/tools/apache-zookeeper-3.8.0-bin/bin/
./zkServer.sh start

./zkServer.sh stop
./zkServer.sh restart
./zkCli.sh -server localhost:2181

验证OK。
cd /data/zookeeper/data
vi myid

保存退出。
-
- #用于计算的时间单元,单位为毫秒。比如session超时:N* tickTime。
- tickTime=2000
-
-
- #用于集群,允许从节点连接并同步到master节点的初始化连接时间,以tickTime的倍数来表示。
-
- initLimit=10
-
- #用于集群,master主节点与从节点之间发送消息,请求和应答时间长度,超过一定的时间从节点就会被抛弃。(心跳机制)
-
- syncLimit=5
-
- #必须配置,比如用来存储事务文件的数据等。
-
- dataDir=/data/zookeeper/data
-
- #日志目录,如果不配置会和dataDir公用
-
- dataLogDir=/data/zookeeper/log
-
- #连接服务器的端口,默认2181
-
- clientPort=2181
-
- #单个client与单台server之间的连接数的限制,是ip级别的,默认是60。假设设置为0。那么表明不作不论什么限制。请注意这个限制的使用范围,不过单台client机器与单台ZKserver之间的连接数限制,不是针对指定clientIP,也不是ZK集群的连接数限制,也不是单台ZK对全部client的连接数限制。
-
- maxClientCnxns=1200
-
- #这个參数和上面的參数搭配使用,这个參数指定了须要保留的文件数目
-
- autopurge.snapRetainCount=10
-
- # 3.4.0及之后版本号,ZK提供了自己主动清理事务日志和快照文件的功能,这个參数指定了清理频率。单位是小时。须要配置一个1或更大的整数,默认是0。表不开启自己主动清理功能
-
- autopurge.purgeInterval=24
-
- # server.myid=你的三个节点的ip地址:2888:3888
- # 2888:集群内机器通讯使用
- # 3888:选举leader使用的端口
-
- server.1=172.10.10.11:2888:3888
- server.2=172.10.10.12:2888:3888
- server.3=172.10.10.13:2888:3888
-
-
-
把172.10.10.1 机器上的环境变量文件拷贝到其他两台机器
scp -r /etc/profile root@172.10.10.12:/etc/
scp -r /etc/profile root@172.10.10.13:/etc/
scp -r /root/tools/apache-zookeeper-3.8.0-bin/ root@172.10.10.12:/root/tools/
scp -r /root/tools/apache-zookeeper-3.8.0-bin/ root@172.10.10.13:/root/tools/
scp -r /data/zookeeper/data/myid root@172.10.10.12:/data/zookeeper/data/
scp -r /data/zookeeper/data/myid root@172.10.10.13:/data/zookeeper/data/
分别把172.10.10.12 、172.10.10.13 的 /data/zookeeper/data/myid 改为 2 、3.
在3台机器上,分别执行
sh /apache-zookeeper-3.8.0-bin/bin/zkServer.sh start
sh /apache-zookeeper-3.8.0-bin/bin/zkServer.sh status
