zookeeper稳定版下载地址 : http://apache.fayea.com/zookeeper/
这篇文章使用的是 zookeeper-3.4.12
首先将的服务器的 ip 地址记录下来 , 这里我使用的是 4台 服务器
集群的角色: leader 1台 、follower 2台、 observer 1台
leader
leader是zookeeper集群的核心。
- 事务请求的唯一调度者和处理者,保证集群事务处理的顺序性
- 集群内部各个服务器的调度者
follower
- 处理客户端非事务请求,以及转发事务请求给leader服务器
- 参与事务请求提议(proposal)的投票(客户端的一个事务请求,需要半数服务器投票通过以后才能通知leader commit; leader会发起一个提案,要求follower投票)
- 参与leader选举的投票
observer
观察zookeeper集群中最新状态的变化并将这些状态同步到observer服务器上
增加observer不影响集群中事务处理能力,同时还能提升集群的非事务处理能力
下载 zookeeper 并解压
进入 zookeeper 目录 找到 conf 文件夹
进入 conf 文件夹 将 zoo_sample.cfg(官方提供模板文件) 复制并重命名为 zoo.cfg
修改zoo.cfg
在最下面 将 4台服务器的ip地址 以 server.id=ip:port:port 的格式书写
server.1=服务器ip:2888:3181
2888 表示follower节点与leader节点交换信息的端口号
3181 如果leader节点挂掉了, 需要一个端口来重新选举
如果增加 observer 需要书写成 server.id=ip:port:port:observer
并在 zoo.cfg 中增加配置 peerType=observer 这里将第4台服务器 作为 observer
zoo.cfg配置文件分析
tickTime=2000 zookeeper中最小的时间单位长度 (ms)
initLimit=10 follower节点启动后与leader节点完成数据同步的时间
syncLimit=5 leader节点和follower节点进行心跳检测的最大延时时间
dataDir=/tmp/zookeeper 表示zookeeper服务器存储快照文件的目录
dataLogDir 表示配置 zookeeper事务日志的存储路径,默认指定在dataDir目录下
clientPort 表示客户端和服务端建立连接的端口号: 2181
接下来 使用 xftp (别的也可) 将修改好的 zookeeper 分别上传到 4台服务器
zoo.cfg中有一个dataDir = /tmp/zookeeper
进入 $dataDir 所在的目录 新建文件 名为 myid 内容为 这台服务器的id
分别为4台服务器分配id 1,2,3,4
cd /tmp/zookeeper
vim myid
内容为 1/2/3/4 (id范围1~255) 不可重复
编辑好id 之后保存并退出
因为 id=4 的服务器 为 observer 服务器
所以我们需要在 id=4 的服务器的 zookeeper存放目录/zookeeper/conf/zoo.cfg 配置文件中 加入配置 peerType=observer
这样集群的配置就完成了
接下来我们来启动集群
进入 zookeeper 目录下的 bin 文件夹
如果文件没有变成 绿色高亮 代表未授权
可使用 chmod +x *.sh 命令进行授权
使用 sh zkServer.sh start 命令启动zookeeper
使用 tail -f zookeeper.out 查看日志输出
将4台服务器全部启动 并查看日志 如没有报错 说明集群启动成功
然后 我们使用 sh zkServer status 命令查看zookeeper 的运行状态与所分配的角色 是否与我们所要配置的一致
myid=1 的 角色为 follower
myid=2 的 角色为 follower
myid=3 的 角色为 leader
myid=4 的 角色为 observer
与我们所要配置的一致 , 集群搭建成功
如想使用java 操作 zookeeper 请参考我的另一片文章 https://blog.csdn.net/weixin_40461281/article/details/85337190