zookeeper搭建(单机+集群)
zookeeper搭建
一、单机环境搭建
1.1 前置条件
版本:
3.4.11
要求:
依赖Java环境
1.2 步骤
- 进入 opt 目录
cd /opt
- 下载安装包
wget http://mirror.olnevhost.net/pub/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
如果通过命令下载失败,可以先从浏览器下载安装包,然后再上传到服务器上面。[https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/]
- 解压安装包
tar -zvxf zookeeper-3.4.11.tar.gz
进入解压后的文件夹,如图所示
- 配置文件
/conf/zoo_sample.cfg 文件为官方给我们的案例配置文件,复制一份,命名为zoo.cfg
,zoo.cfg是官方指定的配置文件命名规则
cp zoo_sample.cfg zoo.cfg
- 修改配置文件
- 首先在
/opt/zookeeper-3.4.11
目录下创建data
和logs
两个文件夹
mkdir data logs
-
修改配置文件
zoo.cfg
cd /opt/zookeeper-3.4.11/conf vim zoo.cfg # 进入 zoo.cfg 修改以下参数 dataDir=/opt/zookeeper-3.4.11/data dataLogDir=/opt/zookeeper-3.4.11/logs # 退出并保存
- 启动zookeeper
- 启动
# 进入 /bin 目录
./zkServer.sh start
-
查看 zookeeper 的状态
./zkServer.sh status
至此,zookeeper单机版搭建完毕!
1.3 配置文件
配置文件详解:
①、tickTime:基本事件单元,这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime
②、dataDir:存储内存中数据库快照的位置,除非另有说明,否则指向数据库更新的事务日志。注意:应该谨慎的选择日志存放的位置,使用专用的日志存储设备能够大大提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会很大程度上影像系统性能。
③、client:监听客户端连接的端口。
④、initLimit:允许follower连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
⑤、syncLimit:表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
⑥、server.A=B:C:D
A:其中 A 是一个数字,表示这个是服务器的编号;
B:是这个服务器的 ip 地址;
C:Zookeeper服务器之间的通信端口;
D:Leader选举的端口。
我们需要修改的第一个是 dataDir ,在指定的位置处创建好目录。
第二个需要新增的是 server.A=B:C:D 配置,其中 A 对应下面我们即将介绍的myid 文件。B是集群的各个IP地址,C:D 是端口配置。
参考官方文档:https://zookeeper.apache.org/doc/r3.5.8/zookeeperStarted.html
二、集群环境搭建
2.1 前置条件
三台 Linux 服务器
192.168.180.196
192.168.180.197
192.168.180.198
2.2 步骤
-
按照上述
1.2 步骤
的 1-5步,依次在197
和198
两台服务器上分别安装 zookeeper -
修改配置文件
cd /opt/zookeeper-3.4.11/conf
vim zoo.cfg
dataDir=/opt/zookeeper/zookeeper-3.4.14/data
dataLogDir=/opt/zookeeper/zookeeper-3.4.14/log
# 增加以下配置
server.1=192.168.180.196:2888:3888
server.2=192.168.180.197:2888:3888
server.3=192.168.180.198:2888:3888
# 解读:
# Server.A=B:C:D
# A 是一个数字,表示这个是第几号服务器
# B 是这个服务器的 ip 地址
# C 是这个服务器与集群中的 Leader 服务器交换信息的端口
# D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口
# 保存并退出
- 创建
myid
文件
# 1.集群模式下需要在data 目录下创建一个 myid 文件
# 2.此文件中有一个值,就是刚才配置文件中 Server.A=B:C:D 对应的 A 的值
# 3.当zookeeper启动时,读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较,
# 从而判断到底是哪个server
cd /opt/zookeeper-3.4.11/data
touch myid
vim myid
# 在文件中写入 A 对应的值: 1 or 2 or 3
# 退出并保存
注:三台服务器,依次创建 myid 文件,写入对应的值。
- 启动
分别启动三台服务器上的 zookeeper
cd /opt/zookeeper-3.4.11/bin
./zkServer.sh start
2.3 zookeeper命令
- 启动命令
./zkServer.sh start
- 停止命令
./zkServer.sh stop
- 重启命令
./zkServer.sh restart
- 查看集群节点状态
./zkServer.sh status
2.4 问题
问题1:zkServer.sh status 查看集群节点状态,集群搭建失败
出现报错 Error
查看日志 zookeeper.out
解决方案:
- 需要设置防火墙
# 1. 查看防火墙状态: dead - 未开启, running - 开启状态
systemctl status firewalld
# 2. 如未开启,需要开启防火墙
systemctl start firewalld
# 3.开放端口号:将zookeeper的端口号设置防火墙
firewall-cmd --add-port=2181/tcp --permanent --zone=public
# 4.将配置文件中的 1-服务器与集群中的 Leader 服务器交换信息的端口
# 2-执行选举时服务器相互通信的端口 分别设置防火墙
# Server.A=B:C:D(server.1=192.168.180.196:2888:3888)
firewall-cmd --add-port=2888/tcp --permanent --zone=public
firewall-cmd --add-port=3888/tcp --permanent --zone=public
# 4.设置完之后,需要重启防火墙
firewall-cmd --reload
# 5.查看刚才设置的,防火墙开放的端口
firewall-cmd --list-ports
# 6.重启zookeeper
./zkServer.sh restart
防火墙开放的端口
-
三台服务按上述步骤,依次执行
-
三台zookeeper重启完毕之后,查看各自zookeeper的状态
./zkServer.sh status
leader-领导者
follower-跟随者
follower-跟随者
注:
- 关闭防火墙命令
systemctl stop firewalld
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY