从k8s集群主节点数量为什么是奇数来聊聊分布式系统
前言
今天简单聊一聊一个小问题,即为什么k8s的集群主节点数量通常是奇数,且3或5个居多?
我们先抛出答案
- 2467等数量的主节点也是可以的,但是不推荐的的原因如下
1. 奇数的原因是防止资源的浪费
k8s的一致性算法RAFT,要求集群需要数量
大于(n/2)
的正常主节点才能提供服务(n为主节点数)
因此3个主节点有1个节点的容错率,而4个主节点也只有1个节点的容错率
2. 三个或五个也是平衡的考虑
3或5则是因为1个没有容错率,7个主节或更多将导致确定集群成员和仲裁的开销加大,不建议这样做
脑裂现象?
这是在Elasticsearch、ZooKeeper、k8s集群都会出现的现象
集群中的Master或Leader节点往往是通过选举产生的。
在网络正常的情况下,可以顺利的选举出Leader
。但当两个机房之间的网络通信出现故障时,选举机制就有可能在不同的网络分区中选出两个Leader
。当网络恢复时,这两个Leader
该如何处理数据同步?又该听谁的?这也就出现了“脑裂”现象。
</