Redis Cluster 故障发现和恢复总结

一、故障发现node

  • 经过ping/pong消息实现故障发现:不须要Sentinel
  • 跟Sentinel同样,有主观下线和客观下线

二、主观下线日志

定义:某个节点认为另外一个节点不可用,“偏见”it

主观下线流程:集群

三、客观下线im

定义:当半数以上持有槽的主节点都标记某节点主观下线客户端

客观下线流程:img

四、尝试客观下线di

  • 通知集群内全部节点标记故障节点为客观下线
  • 经过故障节点的从节点触发故障转移流程

 

五、故障恢复时间

(1)资格检查ping

  • 每一个从节点检查与故障主节点的断线时间
  • 超过 cluster-node-timeout * cluster-slave-validity-factor 取消资格。
  • cluster-slave-validity-factor : 默认是10

(2)准备选举时间

(3)选举投票

(4)替换主节点

  • 当前从节点取消复制变为主节点(slaveof no one)
  • 执行clusterDelSlot撤销故障主节点负责的槽,并执行clusterAddSlot把这些槽分配给本身。
  • 向集群广播本身的pong消息,代表已经替换了故障从节点

六、故障演练

七、具体步骤

  • 执行kill -9 节点模拟拖机
  • 观察客户端故障恢复时间
  • 观察各个节点的日志
相关文章
相关标签/搜索