Redis 集群 (2)

Redis 集群

客户端访问任意节点时,对数据 key 按照 CRC16 规则进行 hash 运算,然后将运算结果对 16383 进行取余,如果余数在当前访问的节点管理的槽范围内,则直接返回对应的数据
如果不在当前节点负责管理的槽范围内,则会告诉客户端去哪个节点获取数据,由客户端去正确的节点获取数据。

4)复制

保证高可用,每个主节点都有一个从节点,当主节点故障,Cluster 会按照规则实现主备的高可用性。

对于节点来说,有一个配置项:cluster-enabled,即是否以集群模式启动。

  

3. 故障转移

集群自动故障转移过程分为故障发现和节点恢复。节点下线分为主观下线和客观下线:

当超过半数的主节点(master)认为故障节点为主观下线时,则标记这个节点为客观下线状态。

从节点(slave)负责对客观下线的主节点(master)触发故障恢复流程,保证集群的可用性。

节点失效机制:选举

Redis 集群

ping/pong 模式

Redis Cluster 通过 ping/pong 消息实现故障发现。

ping/pong 不仅能传递节点与槽的对应消息,也能传递其他状态,比如:节点主从状态,节点故障等。

故障发现就是通过这种模式来实现,分为主观下线和客观下线。

集群中所有 master 参与投票,如果半数以上 master 节点与其中一个 master 节点通信超时(cluster-node-timeout),则认为该 master 节点挂掉。

什么时候整个集群不可用(cluster_state:fail)?

如果集群任意 master 挂掉,且当前 master 没有 slave,则集群进入 fail 状态。也可以理解成集群的[0-16383] slot 映射不完全时进入 fail 状态。

如果集群超过半数以上 master 挂掉,无论是否有 slave,集群进入 fail 状态。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjfpz.html