Redis集群故障转移的方法:1、从所有的从节点里面选举出一个新的主;2、选举出的新主会执行slaveof no one把自己的状态从slave变成master;3、撤销已下线的主节点的槽指派,并把这些槽位重新指派给自己。
Redis集群故障转移的方法:
一、故障检测
- 1.集群中所有节点都会向其它节点发送PING消息,当在规定的时间内,没有收到对应的PONG消息,就把此节点标记为疑似下线;
- 2.在发送的PING消息里面,会带着当前集群和节点的信息;通过这种方式,即可检测节点的存活,又能维护集群信息的统一性,不过有一定
的时延;
- 3.疑似下线不是真的下线,只有满足以下条件才是真的下线;
- 主节点并且是被分配了slot槽位的主节点中有超过一半的节点都认为此节点疑似下线,才能真的下线;
- 4.当某个节点通过消息得知有一个节点的疑似下线投票已经超过集群一半的时候,会发送一个标识此节点下线的广播消息;
- 5.其它节点收到某节点已经下线的广播后,把自己内部的集群维护信息也修改为节点已下线状态。
二、故障转移
- 1.从所有的从节点里面选举出一个新的主;
- 2.选举出的新主会执行slaveof no one把自己的状态从slave变成master;
- 3.撤销已下线的主节点的槽指派,并把这些槽位重新指派给自己;
- 4.新的主节点向集群广播一条PONG消息,通过这个消息告诉所有集群节点:自己已经变成了主节点,接管了原来的主节点;
- 5.新的主节点开始接收和处理与自己槽位相关的命令请求。
相关学习推荐:redis视频教程
以上就是Redis集群故障转移如何实现的详细内容,转载自php中文网
发表评论 取消回复