zookeeper集群中如果有一般以上的节点能够正常工作,则整个集群就能正常提供服务。而且zookeeper集群会选举出一个leader节点,用于写操作。因此zookeeper集群节点数一般为奇数个。
集群搭建:
这里我们使用三个zookeeper节点搭建集群,zookeeper版本为3.4.14,系统使用centos6,用户为root用户,JDK版本为1.8,虚拟机防火墙已关闭:
1、分别解压三个节点的zookeeper-3.4.14.tar.gz文件,并重命名为zookeeper
tar -zxvf zookeeper-3.4.14.tar.gz
mv zookeeper-3.4.14 zookeeper
2、配置zookeeper的环境变量
vim /etc/profile
export JAVA_HOME=/home/zsm/soft/jdk1.8.0_191
export ZOOKEEPER_HOME=/home/zsm/soft/zookeeper
export PATH=.:$PATH:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin
3、创建并修改zoo.cfg配置文件
- 进入zookeeper的conf目录,复制 zoo_sample.cfg 并重命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
- 修改zoo.cfg,配置说明如下
tickTime=2000 # 每个tickTime时间就会发送一次心跳
initLimit=10 # 集群中的follower 与leader 之间初始连接时能容忍的最多心跳数
syncLimit=5 # 集群中flower 跟leader 之间的请求和答应最多能容忍的心跳数。
dataDir=/home/zsm/data/zookeeper # 数据文件存放路径、myid信息、日志文件等
clientPort=2181 # 服务端口号
#maxClientCnxns=60 # 最大连接数
#autopurge.snapRetainCount=3
#autopurge.purgeInterval=1
# 集群配置 service.N = YYY:A:B
# N:代表服务器编号(也就是myid里面的值)
# YYY:服务器地址
# A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
# B:表示 是选举端口(默认是3888)
server.0=192.168.5.180:2888:3888
server.1=192.168.5.182:2888:3888
server.2=192.168.5.183:2888:3888
4、在dataDir配置的目录下,创建myid文件,根据配置分别编辑值:0 、 1、 2
vim /home/zsm/data/zookeeper/myid
5、启动三个zookeeper服务,查看服务状态。启动zookeeper会在你启动的路径下生成zookeeper.out文件,记录zookeeper的启动日志。如果zookeeper启动失败,可以查看zookeeper.out日志。
zkServer.sh start # 启动zk服务
zkServer.sh status #查看服务状态
zookeeper常用命令:
zkCli.sh -server ip:port # 打开zk客户端, 参数可选
help # 输出所有zk支持的命令
这里我们重点说一下,zk数据的操作命令:
- create : 创建节点及数据
- get: 获取节点数据
- set: 修改节点数据
- ls:查看指定路径下包含的节点
- delete: 删除节点数据