0

尝试一次启动一个节点集群,我对 bootstrap-expect 值有点困惑。

它的设置方式是使用 bootstrap-expect 启动 consul,然后在它启动后consul join运行

目前,部署集 bootstrap-expect 将其设置为集群中的节点数,并在该数之后选举领导者。

然而,当 bootstrap-expect 设置为 1 时(思考过程是这样我们可以拥有一个集群而无需等待所有节点),就会发生一些奇怪的事情。

因此,首先,每个节点都认为它是领导者——这是预期的,因为 bootstrap-expect 设置为 1。但是在相互执行 consul join 之后,没有选出新的集群领导者——发生的事情很奇怪——每个节点cluster 仍然认为自己是集群的领导者。

为什么节点在加入集群时不选举新的领导者?或者至少尊重现有的领导者?

4

1 回答 1

1

这是您“故意”创造的称为裂脑的情况。每个服务器都认为它是领导者,并且有自己的日志版本,并且这些版本中的每一个都不能相互协调。众所周知,裂脑很难恢复。由于服务器不能就集群状态应该是什么达成一致,他们无法决定新的领导者应该是谁,并且他们在没有成功选举的情况下继续。您可以阅读Raft以了解有关原因的更多信息。

于 2015-12-12T22:04:47.427 回答