在一个 3 节点副本集中,为什么当 2 关闭时,第三个变成 SECONDARY 而不是 PRIMARY?
我想在数据中心内有 2 个 mongod,在外部有一个,所以如果数据中心出现故障,我希望第三个外部 mongod 成为主节点。
没有和仲裁者是可能的吗?
在一个 3 节点副本集中,为什么当 2 关闭时,第三个变成 SECONDARY 而不是 PRIMARY?
我想在数据中心内有 2 个 mongod,在外部有一个,所以如果数据中心出现故障,我希望第三个外部 mongod 成为主节点。
没有和仲裁者是可能的吗?
好的,找到回复:
http://tebros.com/2010/11/mongodb-arbiters-with-only-two-replicas/
发生了什么事?!事实证明,当一个 mongod 实例被隔离时,它不能投票给自己作为主实例。当你考虑它时,这是有道理的。如果网络链接断开并将您的两个副本分开,您不希望它们都将自己选为主要副本。所以在我的例子中,当 rep1-1 注意到它与副本集的其余部分隔离时,它使自己成为辅助并停止接受写入。
总是以 (cluster_participants/2) + 1 个节点关闭(假设您有奇数个参与者),集群进入只读模式。候选节点需要所有节点中的大多数被选为主节点。
例如,如果您有 5 个节点集群和 3 个节点被吹走,其他节点将保持为次要,因为它们都无法获得 3 票。
更多信息:http ://docs.mongodb.org/manual/core/replication-internals/#replica-set-election-internals