1. etcd 3.4 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 节点提升为普通节点,规避运维风险。

当然增加 leader 角色节点还有其他的一些意义,更多可以参考 etcd 的官方文档

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-10-26 17:23:11

results matching ""

    No results matching ""