Zookeeper 集群
1、机器列表及相关设计
服务器编号 | 服务器 IP 地址 | LF 通信端口 | LF 选举端口 | 客户端端口 |
1 | 192.168.229.131 | 2010 | 6008 | 2180 |
2 | 192.168.229.134 | 2010 | 6008 | 2180 |
3 | 192.168.229.133 | 2010 | 6008 | 2180 |
由于是在三台不同的服务器上搭建的集群,为了操作方便,所以每台机器上创建的文件夹都是相同路径,相同名称的
2、将 zookeeper-3.4.14.tar.gz 分别上传到三台服务器上,每台服务器上分别使用命令解压得 zookeeper-3.4.14 文件夹
1 2 | // 解压 zookeeper 的压缩包 tar -zxvf zookeeper- 3.4 . 14 .tar.gz |
3、分别在三台服务器的 zookeeper-3.4.14 文件夹下,新建文件夹 mylog、mydata,用于存放 zookeeper 的日志和数据
4、进入 zookeeper-3.4.14 下的 conf 文件夹下,复制 zoo_sample.cfg 并且命名为 zoo.cfg
5、编辑 zoo.cfg (由于我们这里不是伪集群,是在三台不同的服务器上进行的集群,所以三台机器的配置文件是一样的)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # tickTime:客户端与服务器、服务器与服务器之间维持心跳的时间间隔,也就是每一个 tickTime 会发送一次心跳,单位为毫秒 tickTime= 2000 # initLimit:集群中 Leader 和 Follow 初始化连接时最多能容忍的心跳数 # 也就是初始化过程中,如果 Leader 和 Follow 在 ( 10 *tickTime)ms的时间内还没有连接上,则认为连接失败 initLimit= 10 # syncLimit:同步通信实现, Leader 和 Follow 服务器之间发送请求和接收应答最多能容忍的心跳数 # 也就是 Leader 和 Follow 如果发送的请求在 ( 5 *tickTime)的时间没没有应答,那么就认为 Leader 和 Follow 之间连接失败 syncLimit= 5 # 自定义的 zookeeper 数据存放目录 dataDir=/usr/local/zookeeper/zookeeper- 3.4 . 14 /mydata # 自定义的 zookeeper 的日志存放目录 dataLogDir=/usr/local/zookeeper/zookeeper- 3.4 . 14 /mylog # 客户端连接的端口 clientPort= 2180 # Zookeeper集群中节点个数一般为奇数个(>= 3 ),若集群中 Master 挂掉,剩余节点个数在半数以上时,就可以推举新的主节点,继续对外提供服务 # Zookeeper集群配置项的格式比较特殊,具体规则如下: server:N=YYYY:A:B # N:表示服务器编号,例如 0 、 1 、 2 ...... # YYYY:表示服务器的IP地址. # A:为LF的通信端口,表示该服务器与集群中的 Leader 交换信息的端口 # B:为选举端口,表示选举新 Leader 时,服务器之间相互通信的端口(当 Leader 挂掉时,其它的服务器会相互通信,选择出新的 Leader) # 一般来说,集群中的 A 和 B 都是一样的,只有伪集群的时候 A 和 B 才不一样 server. 1 = 192.168 . 229.131 : 2010 : 6008 server. 2 = 192.168 . 229.134 : 2010 : 6008 server. 3 = 192.168 . 229.133 : 2010 : 6008 |
6、在 zookeeper-3.4.14 的 mydata 文件下下面新建 myid 文件,并编辑 myid 文件,并且在里面写入对应的 server 的数字
1 2 3 4 | // 进入 mydata 目录下 cd /usr/local/zookeeper/zookeeper- 3.4 . 14 /mydata // 新建文件 myid touch myid |
7、分别查看三台机器的防火墙是否关闭,如果未关闭,请先关闭防火墙
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // 查看防火墙状态 [root @CentOS002 bin]# sudo service iptables status 表格:filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0 . 0.0 / 0 0.0 . 0.0 / 0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0 . 0.0 / 0 0.0 . 0.0 / 0 3 ACCEPT all -- 0.0 . 0.0 / 0 0.0 . 0.0 / 0 4 ACCEPT tcp -- 0.0 . 0.0 / 0 0.0 . 0.0 / 0 state NEW tcp dpt: 22 5 REJECT all -- 0.0 . 0.0 / 0 0.0 . 0.0 / 0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0 . 0.0 / 0 0.0 . 0.0 / 0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination // 关闭防火墙 [root @CentOS002 bin]# sudo service iptables stop iptables:将链设置为政策 ACCEPT:filter [确定] iptables:清除防火墙规则: [确定] iptables:正在卸载模块: [确定] // 再次查看防火墙状态,发现防火墙已经关闭了 [root @CentOS002 bin]# sudo service iptables status iptables:未运行防火墙。 |
8、同时启动三台服务器上的 zookeeper 服务,并且三台服务器的角色信息如下
启动服务的时候需要注意,一定要等全部启动完成之后再去查看状态,可能稍微有一点点延迟,如果启动一台或者两台使用 ./zkServer.sh status 去查看状态的话,会有 Error conftacting service,It is probably not running 的报错信息,如果不能正常启动,去 zookeeper.out 文件中查看不能启动的原因.
9、连接客户端,由于集群之后连接客户端的命令不再是 ./zkCli.sh 了
1 2 | // 连接 zookeeper 客户端,端口我在 zoo.cfg 中修改成了 2180 ./zkCli.sh -server 192.168 . 229.131 : 2180 |
10、测试
在 131 这台机器上创建一个节点 /xiaomaomao
在 134 这台机器上查看,看节点以及数据是否已经同步了,如果节点和数据能够正常同步,那么 zookeeper 集群搭建就完成了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?