标签:06 -- 成员 配置 leader Raft 双主 变更 节点
一、常规处理成员变更存在的问题
- 我们先将成员变更请求当成普通的写请求,由领导者得到多数节点响应后,每个节点提交成员变更日志,将从旧成员配置(Cold)切换到新成员配置(Cnew)。
- 但每个节点提交成员变更日志的时刻可能不同,这将造成各个服务器切换配置的时刻也不同,这就有可能选出两个领导者,破坏安全性。
1.1、案例
如图,蓝色代表新的配置。绿色代表老的配置。Old状态有三台机器Server1、2、3。 New加入两台server4、5。
考虑以下这种情况:集群配额从3 台机器变成了5 台,可能存在这样的一个时间点(红色箭头),两个不同的领导者在同一个任期里都可以被选举成功(双主问题),一个是通过旧的配置,一个通过新的配置。
1. 在箭头那个时候,发起leader选举
1. server1、2使用老配置,他们之中的一个会被当选为leader。
2. 3、4、5使用新的配置,他们之中的一个会被当选为leader。
1.2、出现双主的场景
- 成员变更存在的问题是增加或者减少的成员太多了,导致旧成员组和新成员组没有交集,因此出现了双主。
二、解决方案(只需要保证不会让新或者旧配置单独作出决定就行)
- 每次成员变更只允许增加或删除一个成员(如果要变更多个成员,连续变更多次)
标签:06,--,成员,配置,leader,Raft,双主,变更,节点 来源: https://blog.csdn.net/zhou920786312/article/details/115457927
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。