【问题标题】:Bootstrap expect=1 in consul results in weird behavior in clusterConsul 中的 Bootstrap expect=1 导致集群中出现奇怪的行为
【发布时间】:2015-12-13 06:04:47
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: consul


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2018-08-05
      相关资源
      最近更新 更多