Raft集群中节点故障时重新选举Leader

选举过程或者任期中,如果Leader节点出现故障(如死机),就会触发重新选举。如下图所示,Leader节点B故障(灰色),这时候节点A和C就会等待一个随机时间(选举超时),谁等待的时候更短,谁就先成为Candidate,然后向其他节点发送投票请求:

raft重新选举


重新选举

如果节点A能得得到节点C的投票,加上自己的投票,就有大多数选票。那么节点A将成为新的Leader节点,并且新任期Term,即任期的值加1更新到2。

任期

需要说明的是,每个选举期只会选出一个Leader。假设同一时间有两个节点成为Candidate(它们随机等待选举超时时间刚好一样,这个出现的可能性非常小,很可能是因为网络原因导致),如下图所示,并且假设节点A收到了节点B的投票,而节点C收到了节点D的投票:

raft选票一样

这种情况下,就会触发一次新的选举,节点A和节点B又等待一个随机的选举超时时间,直到一方胜出:

Raft选举超时

我们假设节点A先到超时,并能得到大多数投票,那么接下来节点A就会成为新的Leader节点,并且任期term加1:

Raft获得选票