一. 服务器环境准备
我们这次准备了3台主机来完成。分别是slave1,slave2,slave3
zookeeper的集群中的机器数量最好应该是奇数个,因为需要过半存活集群才能工作,所以偶数个机器提供的集群可靠性其实和偶数-1个机器提供的集群可靠性是一样的。之前也有在Zookeeper原理介绍进行介绍。
二.集群配置
前面ZooKeeper入门教程也完成基本入门安装测试,这次在前面的基础上完成集群搭建。
1>zoo.cfg
进入conf目录,通过修改zoo.cfg来对zookeeper进行配置。这个名字固定写死,因为zookeeper启动会检查这个文件,根据这个配置文件里的信息来启动服务。
sudo vim zoo.cfg
# 服务器之间或客户端与服务器之间维持心跳的时间间隔
# tickTime以毫秒为单位。
tickTime=2000
# 集群中的follower服务器(F)与leader服务器(L)之间的初始连接心跳数
initLimit=10
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数
syncLimit=5
# 快照保存目录
# 不要设置为/tmp,该目录重新启动后会被自动清除
dataDir=/home/iot/jzz/zookeeper/data
dataLogDir=/home/iot/jzz/zookeeper/logs
# 客户端连接端口
clientPort=2181
# server.服务编号=服务地址、LF通信端口、选举端口
server.1=slave1:2888:3888
server.2=slave2:2888:3888
server.3=slave3:2888:3888
2>myid
在之前配置dataDir路径下,创建 myid,其中写上一个数字表明当前机器是哪一个编号的机器。
注意:文件名称必须是myid,文件内容只需要一个数字即服务器列表中当前服务器的编号。
sudo vim myid
slave1:
1
slave2:
2
slave3:
3
三、启动zookeeper
#启动ZK服务:
bin/zkServer.sh start
#停止ZK服务:
bin/zkServer.sh stop
#重启ZK服务:
bin/zkServer.sh restart
#查看ZK服务状态:
bin/zkServer.sh status
Zookeeper集群需要每台挨个启动。
启动集群的时候,集群数量启动没有超过一半,状态会有错误提示,当集群启动数量超过一半就会自动转为正常状态,并且此台使集群进入正常工作状态的服务器会成为leader角色,集群中其他服务器的角色为fllower。
slave1和slave2启动后如下图
slave3启动后
也可以是用jps命令查看线程。
Zookeeper集群模式搭建到此完成。
遇到问题
搭建zookeeper集群时遇到连不通其他结点3888端口的问题
myid:2] - INFO [QuorumPeermyid=2(secure=disabled):QuorumCnxManager@430] - Have smaller server identifier,
so dropping the connection: (100, 2)
2021-11-14 20:55:08,343 [myid:2] - INFO [QuorumPeermyid=2(secure=disabled):FastLeaderElection@919] - Notification time out: 400
2021-11-14 20:55:08,743 [myid:2] - WARN [QuorumPeermyid=2(secure=disabled):QuorumCnxManager@677] - Cannot open channel to 1 at elec
tion address slave_01/192.168.31.13:3888
解决 在zoo.cfg增加
quorumListenOnAllIPs=true