我来问问GPT,etcd为啥要设计leaner角色?

这是我日更的第3篇文章。

今天提前给更新了,之前一直揣着明白装糊涂,其实日更为啥说简单呢?

因为在清理收藏夹的时候就能一并做了,当然如果没有收藏夹还有每天的生活和那么多付费文章呢。

昨天把阿里云网盘的文件清理下(主要刚好在用钉钉个人版,这个整合了阿里云盘,明天单独聊聊钉钉个人版,这个话题觉得可以写满300字,哈哈),发现清理垃圾真的让人爽。

好吧,废话不多说了,重点聊聊《etcd为啥要设计leaner角色》这个话题。

当然不是空穴老巢写这个话题,主要是之前学习etcd遇到一些问题,发现回看真的增强了理解程度。

总结下,etcd设计learner角色的原因有以下几点:

  1. 安全性 。默认新加入的成员的状态是learner,不会改变quorum的大小,极大改善成员变更的安全性。
  2. 自动性 。一旦learner追赶上了leader的log,集群可以自动地提升learner的身份,无需用户定一个确切的阈值。
  3. 备份节点 。learner可以成为一个备份的故障恢复节点,加入时作为备份节点,自动提升当集群的可用性受到影响的时候。

关于安全性,之前的一个文章分析到位,直接粘贴过来:

etcd集群的所有运维操作,都是需要通过 raft 达成一致才会生效的,也就是说所有的节点增加、删除都需要集群中有大多数节点处于 health 状态。特别在新加节点的时候,如果出现了误操作,可能会导致集群处于不正常状态,不得不进行完全回退,具体举例如下:

  • 刚开始只有一个 member,此时 quorum 是1
  • 现在进行一次 member add 操作,只要最初的节点同意即可,此时 quorum 是2
  • 在增加第二个 member 的时候,配置错了 peerURL,此时会导致这两个 member 之间无法建立连接
  • 又因为 quorum 已经是2了,所有的读写操作,都需要两个节点达成一致,因此此时集群处于无效状态

上述仅仅举了一例,还有一些其他情况下,etcd 仅仅有 leader,follower 两种节点也会有一些问题。

在 etcd 3.4 版本中,引入了新的 learner 角色的节点,learner 角色除了不参与投票外,跟其他普通节点一致,并且支持将 learner 节点提升为普通的参与投票的节点。因此针对上面的情况,如果有配置错误的情况,刚开始作为 learner 节点启动就会发现问题,因为 learner 节点不影响 quorum,所以 quorum 不会改变。在保证新节点增加没有问题后,可以将 learner 节点提升为普通节点,规避运维风险。

图片

希望在AIGC领域搞事情的,可以与我(wx: zyhui98)链接,一起扬帆启航。

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/384505.html

(0)
联系我们
联系我们
分享本页
返回顶部