redis复制和故障转移

Posted 周杰伦本人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis复制和故障转移相关的知识,希望对你有一定的参考价值。

redis复制和故障转移

redis群集的节点分为主节点和从节点,主节点用于处理插槽,从节点复制主节点,如果主节点出现故障而脱机,则代替脱机主节点

节点是如何复制的?

  使用CLUSTER REPLICATE nodeid命令使节点成为nodeid节点的从节点。 此节点的clusterState的myself的slaveof属性指向此nodeid的clusterNode,myself的flags属性id更改为redisnode

如何检测节点是否脱机

  集群中的每个节点通过发送PING消息检测对方是否离线,如果能返回PONG消息则表示正常,如果在规定时间内不返回PONG消息,则将该节点标记为涉嫌离线如果确定具有超过集群一半主节点的节点涉嫌脱机,则该节点被标记为脱机,并且该节点向集群广播其故障消息。

故障切换

  接下来是故障切换。 更具体地说,从主节点的所有从节点中选择一个节点,然后运行SLAVEOF no one命令使其成为主节点。 新的主节点接管脱机节点的时隙分配,并向群集广播PONG消息,以告知其他节点自己是主节点。 然后,该主节点接收并处理自己插槽中的命令,以完成故障转移。

新的主节点是如何从从节点中选择的呢?

  基于Raft算法的leader选举方法的实现,首先有一个表示该投票的配置纪元,当从节点发现主节点的下划线时,向集群广播消息,并向收到消息的其他没有投票给你的主节点

总结

这就是redis的复制和故障转移的相关知识点,通过发送PING PONG命令来检测节点是否下线,通过RAFT算法选举出leader来进行故障的转移,投票机制,新的主节点会向集群中广播PONG消息来让其他主节点知道自己已经是主节点了,新的主节点处理自己负责的槽位的相关命令。

以上是关于redis复制和故障转移的主要内容,如果未能解决你的问题,请参考以下文章

Redis哨兵和cluster集群

redis sentinel及redis主从读写分离时sentinel配置

Redis-sentinel

redis高级

Redis的高可用(使用篇)

字节三面:Redis 集群能支撑多大的数据量?