关于Raft集群节点重连后无法选举Leader的矛盾问题问询
你的描述存在错误,集群可以正常选出新Leader
关键错误点分析:
- 任期号同步逻辑:当n1重连后,会发现当前Leader n2的任期号高于自己,立刻转为Follower,更新自身任期至集群当前任期,同时同步n2的日志(包括已提交的v2、v3),直到日志追平。
- n3的选举资格:n2成为Leader时,n3作为Follower会同步并提交v2、v3,且任期号与n2一致。当n2断开后,n3的任期号和已完成日志同步的n1完全相同,两者日志均包含v1、v2、v3。此时任意节点发起选举请求,都能获得对方投票(满足日志新鲜度要求+任期一致),从而当选Leader。
- 极端情况的兜底逻辑:如果n1刚重连还没完成v2、v3同步就发生n2断开,此时n3的日志比n1更新,n3发起选举时,n1会因n3日志更优(任期相同但日志更长/索引更大)投赞成票,n3能拿到2票(多数)成功当选Leader,之后n1会继续从n3同步剩余日志。
内容的提问来源于stack exchange,提问作者huangyt39
相关产品推荐
相关产品推荐

