我在测试Kafka集群容错性时,发现这样一个问题:
我搭建的kafka集群中包含3个节点,当我先随机杀掉两个节点时,第3个节点成为leader,整个集群仍然可用,当我再杀掉唯一的节点时,kafka集群不可用。
但是我发现应用程序的日志一直在重连最后宕机的leader,并没有重连之前两个宕机的节点。
然后,我恢复了先杀掉的两个kafka节点,此时kafka集群可用,但我发现kafka客户端仍然没有重连恢复的节点,而是一直保持与最后死掉leader的重连。
但是其他节点恢复后成为新的leader了,客户端也没有重连,也就造成了全部节点宕机进行恢复时,必须恢复最后宕机的leader,否则,kafka集群虽然已经可用,但是应用程序仍然无法正常使用。
不知道这个问题怎么解决。