尝试一次启动一个节点集群,我对bootstrap-expect值有点困惑。
它的设置方式是使用bootstrap-expect启动consul,然后在启动后consul join
运行
目前,部署设置bootstrap-expect将其设置为群集中的节点数,并在该数字后选出一个领导者。
然而,当bootstrap-expect设置为1时(思考过程是这样我们可以在没有等待所有节点的情况下拥有一个集群),会发生一些奇怪的事情。
首先,每个节点都认为它是领导者 - 这是预期的,因为bootstrap-expect设置为1.但是在领事联合之后,一个新的集群领导者没有被选举 - 会发生什么是奇怪的 - 集群中的每个节点仍然认为自己是集群领导者。
为什么节点在加入群集时选择新的领导者?或者至少尊重现有的领导者?
答案 0 :(得分:1)
这是您“有意”创建的名为Split Brain的条件。每个服务器都认为它是领导者并拥有自己的日志版本,并且每个版本都不能相互协调。斯普利特大脑很难恢复。由于服务器无法就集群状态应该达成什么达成一致,他们无法决定新领导者应该是谁,并且他们在没有成功选举的情况下继续。您可以阅读Raft以了解有关原因的更多信息。