Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态。
所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
redis-cluster把所有的节点映射到[0-16383]slot上(不一定是平均分配),cluster 负责维护node<->slot<->value。
Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中。
slave
负责一定数量的槽的节点被称为master节点,每个master节点可以配置若干个备份节点——称为slave节点。Slave节点一般作为冷备份保存master节点的数据,在master节点宕机时替换master节点。
集群是如何判断是否有某个节点挂掉:
首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息。它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕了,然后去连接它的备用节点。
集群进入fail状态的必要条件:
某个主节点和所有从节点全部挂掉,我们集群就进入faill状态。
如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态。
如果集群任意master挂掉,且当前master没有slave.集群进入fail状态。
集群构建:
三台主机,IP分别是:
192.168.121.121
192.168.121.122
192.168.121.123
每个主机上端口分别是:
7000 和 7001
集群至少需要3主
各节点角色
192.168.121.121:7000 master主节点
192.168.121.121:7001 slave从节点,是192.168.121.122:7000的从节点
192.168.121.122:7000 master主节点
192.168.121.122:7001 slave从节点,是192.168.121.123:7000的从节点
192.168.121.123:7000 master主节点
192.168.121.123:7001 slave从节点,是192.168.121.121:7000的从节点
由上面可以看出:
三个master主节点分布在三个不同的服务器上,三个slave从节点也分布在三个不同的服务器上。
即使有一台主机停机,整个集群也会正常运行。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。