一起raft 切主后的故障分析

网友投稿 277 2022-10-31

一起raft 切主后的故障分析

现象

线上由3个控制节点组成的一个raft集群种的一个节点stop了,stop 之前刚发过一条踢掉一台数据节点的命令,但是数据节点并没完全被踢掉---虽然元数据不在了,但是节点还在集群中,前端还能访问它。

问题分析

梳理了下kick 数据节点的业务流程如下:1.RPC服务器端响应brpc请求;2.服务器端判断当前如果是leader, 就进入leader 处理流程;3.leader append KickDataServer 事务日志到所有的副本;

每个副本收到事务日志,走下边的流程:4.1 解析对应的请求类型;4.2 判断自己现在角色是否leader, 如果不是结束当前流程;如果是,开始apply 这条事务日志:4.2.1 去掉数据库中关于带kick的数据节点的记录;4.2.2 针对有副本在待删除节点机器上的block, 发起补副本;4.2.3 返回给CLI kick数据节点成功;4.2.4 给待kick的数据节点发下线命令。

上面流程看了两遍,初步怀疑是执行到4.2.3后碰到控制节点被stop 导致的。但后来仔细一下,咱这是基于raft的啊,即便老leader被stop掉,新leader 接管后,也会重放踢数据节点的命令啊? 那问题在哪呢?

遗留问题

raft 切主后回放哪些log? raft 切主后如何回放log?

参考链接

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Java中的八种单例创建方式
下一篇:USB2.0接口芯片CY7C68013的固件程序开发
相关文章

 发表评论

暂时没有评论,来抢沙发吧~