前言
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
修改配置文件zoo.cfg
进入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!保存并退出文件。
启动zookeeper
cd /root/tools/apache-zookeeper-3.8.0-bin/bin/
./zkServer.sh start
停止& 重启zookeeper
./zkServer.sh stop
./zkServer.sh restart
验证zookeeper
./zkCli.sh -server localhost:2181
验证OK。
集群部署
创建myid(172.10.10.1机器)
cd /data/zookeeper/data
vi myid
保存退出。
编辑 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
# 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/
拷贝zookeeper
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/
拷贝zookeeper的myid
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.
启动zookeeper
在3台机器上,分别执行
sh /apache-zookeeper-3.8.0-bin/bin/zkServer.sh start
查看状态
sh /apache-zookeeper-3.8.0-bin/bin/zkServer.sh status
版权归原作者 ~见贤思齐~ 所有, 如有侵权,请联系我们删除。