今天在部署的问题上与同事发生了点不同的意见,偶数台机器,同事说因为redis选举要奇数台机器,
不能部署? 纳尼? 不可能啊...redis,咋不能偶数台部署...
印象中redis自组集群,几台都可以的吧,但是一般都建议奇数台机器做集群,是这样的:
redis只能是奇数个节点。这是一种错误的说法,Redis只不过是推荐奇数个节点,从来没有过必须是奇数节点的说法,那么这是为什么呢?
为什么redis推荐奇数个节点:
其主要原因还是从成本上考虑的,因为奇数个节点和偶数个节点允许宕机的节点数是一样的,比如3个节点和4个节点都只允许宕机一台,那么为什么要搞4个节点去浪费服务资源呢?
那么话又说回来了,为什么三个节点和四个节点都只允许宕机一个节点呢?这是因为redis规定集群中,半数以上,也就是投票获得比重超过百分之50的节点认为主节点故障了,才会选举新的节点。
举个例子:
比如有3个节点,他们的比重分别是33.33%,100/3 对吧,那么如果 A节点down掉了,
那么这个时候选举:
1.如果B投票给自己,C投票给自己,那么B占有比重还是33.33的票,C还是33.33的票,没有一台机器比重是超过百分之50的,需要重新选举
2.如果B,C都投给对方,那么各自还是33.33的票,没有一台机器比重是超过百分之50的,需要重新选举
3.如果B投给自己,C投给B ,那么B的比重就是33.33+33.33 >50了,所以B成为新的主机,系统恢复
4.如果C投给自己,B投给C,那么C的比重就是33.33+33.33>5