zookeeper伪分布式环境的搭建
1|0搭建Zookeeper集群
1|11.1 搭建要求
真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上,用端口进行区分。
我们这里要求搭建一个三个节点的Zookeeper集群(伪集群)。
在搭建集群前,我们需要将本机的防火墙关闭(此处省略)。
1|21.2、Zookeeper集群⻆⾊
zookeeper集群中的节点有三种⻆⾊
-
Leader:处理集群的所有事务请求,集群中只有⼀个Leader。
-
Follower:只能处理读请求,参与Leader选举。
-
Observer:只能处理读请求,提升集群读的性能,但不能参与Leader选举。
1|31.3 准备工作
重新部署一台虚拟机作为我们搭建集群的测试服务器。
(1)安装JDK 【此步骤省略】。
(2)Zookeeper压缩包上传到服务器
(3)将Zookeeper解压 ,然后在zookeeper路径下创建一个文件目录
最后一步,每一台服务都添加一个id
在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。这个文件就是记录每个服务器的ID
1|41.4 启动集群
启动集群就是加载各个服务配置文件
查看启动状态
zoo1
可以看到 这里启动成功了,模式为子节点也就是从节点,只能读不能写,参与Leader选举
zoo2
模式为主节点:可以读也可以写,整个集群只有一个
zoo3
模式为从节点:只能读不能写,参与Leader选举
zoo4
模式为观察者模式:只能读不能写,还不能投票
启动后我们查询一下每个实例的运行状态
1|51.5 模拟集群异常
(1)首先我们先测试如果是从服务器挂掉,会怎么样
把1号服务器停掉,观察2号和3号、4号,发现状态并没有变化
可以看到,我们的 2号主服务正常,3号从服务器正常,4号观察者服务器也正常
由此得出结论,4个节点的集群,从服务器挂掉一个,集群正常
(2)我们再把3号服务器(从服务器)也停掉,查看2号(主服务器)的状态,发现已经停止运行了。
由此得出结论,4个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为除了观察者之外可运行的机器没有超过集群总数量的半数。
(3)我们再次把1号服务器启动起来,发现2号服务器又开始正常工作了。而且依然是领导者。
(4)我们把3号(从)服务器也启动起来,把2号(主)服务器停掉,停掉后观察1号和3号的状态。
发现新的leader产生了~
由此我们得出结论,当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader
(5)我们再次测试,当我们把2号服务器重新启动起来启动后,会发生什么?2号服务器会再次成为新的领导吗?我们看结果
我们会发现,2号服务器启动后依然是跟随者(从服务器),3号服务器依然是领导者(主服务器),没有撼动3号服务器的领导地位。
__EOF__

本文链接:https://www.cnblogs.com/weizw/p/16834313.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端