做redis集群一般采用奇数个,为啥采用奇数个呢,这里涉及到过半选举(在redis集群中,只有超过一半的节点说某个节点挂掉了,才能确定某个节点挂了。因此redis集群至少要有3个主节点(如果只有两个节点,挂掉一个,剩下一个投票是不会超过50%的,所以最少要三个节点))。
如上图,如果redis集群有5个节点,无论挂一个还是两个都没有影响,只要一直有至少三个存在就可。
我们都知道redis始终存在一个问题无法解决,没错就是死锁问题。程序在执行的时候stop the world,建议用zookeeper(在zookeeper的选举过程中,为了保证选举过程最后能选出leader,就一定不能出现两台机器得票相同的僵局,所以一般的,要求zk集群的server数量一定要是奇数,也就是2n+1台,并且,如果集群出现问题,其中存活的机器必须大于n+1台,否则leader无法获得多数server的支持,系统就自动挂掉。所以一般是3个或者3个以上的奇数节点。)