先上图混个眼熟:
各个redis服务器之间的连接采用的是ping-pong机制使每个服务器间互相通信,检测一个节点是否挂掉采用的是节点间的相互检测(相互投票),当一个节点被该集群中超过半数的节点检测出有问题,即认为该节点挂掉,所以要想投票过半,节点个数至少为3个(当然两个节点亦可以搭建集群,这样高可用性不强,不能采取投票的方式检测节点是否正常工作)【附】。ok那么为什么上图有6个节点,因为一般服务器为了数据安全都会采用一个备用服务器(slave),备用个数至少为一个,所以一共需要6个服务器即使3主3备用。
附(两节点集群检测自身是否挂掉的方法):
当集群中只有两个节点时投票1:1无法通过投票的方式检测,这时候可以借助另外的参考节点,如ping网关(可以是一个节点),可以和测试点ping通,但不可以和对方通,说明对方节点有问题,或本节点有问题;还有就是通过仲裁设备,如仲裁磁盘,每个节点都间隔一定时间不停往磁盘写数据,若监测到对方不再写入的时候,可能对方节点出故障。