实验:zk master宕机后,临时节点在新的master上是否存在,结果出人意料
一、实验
实验说明:3台zk集群,主要验证:master上的客户端,在master上建立临时节点,当master宕机时,其他follower选为主后,临时节点是否存在。
主要是通过此来验证,基于zk的分布式锁是否足够健壮。验证:是否会在master宕机后,存在多个客户端都能拿到分布式锁的情况。
二、步骤
前提:搭建好集群。
我这边共3台机器,ip为:192.168.58.131(leader) 192.168.58.132(follower) 192.168.58.133(follower)
为了显眼,leader的shell屏幕为绿色,每个ip开了2个shell(一个进行zkCli操作,一个方便在外面操作),如下:
0、先在各自机器上开启zkCli,连接到各自的zk节点
分别在3台机器上启动zkCli,启动命令如下:
1、在master创建临时节点
2、观察follower
3、模拟master宕机,观察新选举的leader节点上,临时节点是否存在
观察剩下的两台follower,看看新选举了哪台为leader:
以上,说明133从follower被提升为leader。
接下来,看看133上,临时节点是否存在,可以看到,一开始是存在的:
我操作了很多次,接下来这张和上图比较像,但其实不是重复,而是我:手速够快
注意下图,过了这么一阵时间后(大概几秒钟左右),临时节点消失了:
三、结论
主节点宕机后,其上的会话建立的临时节点,一开始在新的leader上是存在的,过了一会后,消失了。
具体原因,还待研究。