RT
现在准备做一个实验
现有三个节点,其中GP-1,GP-2为follower,GP-3为leader
高配1.png
高配2.png
高配3.png
关闭一个follower节点
先用ls /
命令 查看当前存在的节点
现将GP-2中的zk关闭
此时在GP3上创建一个新的节点 create /zk "nodetest"
此时的GP-1中,新创建的节点被同步了,如下图所示
GP-1同步节点后状态.png
此时的GP-1还是follwer,而Gp3还是leader
关闭leader节点
首先我们将Gp-2重新启动,恢复现场
此时还是一样 Gp-1 GP-2是follower GP3是leader
然后我们将GP3关闭
关闭GP3.png
而后,发现GP-2变成了leader
GP-2变为leader.png
然后我们在刚才的zk节点下新建一个子节点
新建子节点.png
最后发现同步到GP-1了
同步到Gp-1.png
(by the way,在此时关闭Gp-1,只剩一个节点时,GP-2直接报拒绝连接 (Connection refused)
zk服务就不可用了)
只有两个节点直接启动
最后我们来实验只有两个节点同时启动的情况下
一开始会报路由错误,即CP3没有启动
image.png
然而,过了一会会,GP2变成leader了。。。。
Gp2变为leader.png综上,并不是说两个节点不能够使用,而是两个节点的情况下,只有收到半数以上节点的成功反馈就变成了只有收到全部节点的成功反馈,如果再挂掉一个就系统不可用
另外,网上说偶数个节点还是可能出现票数相同的情况,但根据zk的选举机制来看,概率很低
如果要出现偶数个节点票数相同的话,意味着有两个节点myId也是一样的,这其实应该是不可能的
网友评论