节点奇数的原因:
zookeeper集群节点数推荐为奇数(2n+1)个,因为如果为偶数个节点,当有一半节点发生故障时,由于没有足够的节点数来选举新的leader节点(要求半数以上节点选举,不包含半数),会导致整个集群无法工作。如果只能部署两个节点,则不如使用单节点,因为两个节点的集群,只要任意一个节点发生故障,则集群无法工作。
最少3个的原因:
集群规则为:2N + 1 台,N > 0,即最少需要 3 台。
因为 ZK 集群的机制是只要超过半数的节点正常,集群就能正常提供服务。
只有在 ZK 节点挂的太多,只剩一半或不到一半节点能工作,集群才失效。
如:
3 个节点的 cluster 可以挂掉一个节点(leader 可以得到 2 票 > 1.5)
2 个节点的 cluster 就不能挂掉任何一个节点了(leader 可以得到 1 票 <= 1)
参考文献:https://blog.csdn.net/guan0005/article/details/84954301
https://blog.csdn.net/dd2016124/article/details/114038886