为什么在主-次仲裁器MongoDB副本集中的选举需要仲裁器?

为什么在主-次仲裁器MongoDB副本集中的选举需要仲裁器?,mongodb,database-replication,Mongodb,Database Replication,Mongo文档将以下内容列出:主、次、仲裁器,作为副本集的最小体系结构 为什么那里需要仲裁人?如果主设备出现故障,辅助设备将看不到心跳信号,因此它需要成为主设备。换句话说,为什么主+辅助配置不够?这个问题似乎没有解决这个问题,因为它讨论了更多的节点。假设您只有两个服务器,一个主服务器和一个辅助服务器 如果辅助服务器突然无法到达主服务器,则可能是主服务器停机(在这种情况下,辅助服务器应成为主服务器),但也可能是隔离辅助服务器的网络问题(这是辅助服务器实际停机的原因) 但是,如果您有一个仲裁器,并且

Mongo文档将以下内容列出:主、次、仲裁器,作为副本集的最小体系结构


为什么那里需要仲裁人?如果主设备出现故障,辅助设备将看不到心跳信号,因此它需要成为主设备。换句话说,为什么主+辅助配置不够?这个问题似乎没有解决这个问题,因为它讨论了更多的节点。

假设您只有两个服务器,一个主服务器和一个辅助服务器

如果辅助服务器突然无法到达主服务器,则可能是主服务器停机(在这种情况下,辅助服务器应成为主服务器),但也可能是隔离辅助服务器的网络问题(这是辅助服务器实际停机的原因)


但是,如果您有一个仲裁器,并且次仲裁器无法到达主仲裁器,但它可以到达仲裁器,那么问题在于主仲裁器,因此它必须成为新的主仲裁器。如果它不能到达主服务器,也不能到达仲裁器,则次服务器知道问题在于它是隔离的/断开的-较差的次服务器:(-因此他不能成为主服务器

假设您只有两台服务器,一台主服务器和一台次服务器

如果辅助服务器突然无法到达主服务器,则可能是主服务器停机(在这种情况下,辅助服务器应成为主服务器),但也可能是隔离辅助服务器的网络问题(这是辅助服务器实际停机的原因)


但是,如果您有一个仲裁器,而次仲裁器无法到达主仲裁器,但它可以到达仲裁器,则问题在于主仲裁器,因此它必须成为新的主仲裁器。如果它无法到达主仲裁器,也不能到达仲裁器,则次仲裁器知道问题在于他是孤立/损坏的-较差的次仲裁器:(-因此他不能成为主服务器

假设您只有两台服务器,一台主服务器和一台辅助服务器

如果辅助服务器突然无法到达主服务器,则可能是主服务器停机(在这种情况下,辅助服务器应成为主服务器),但也可能是隔离辅助服务器的网络问题(这是辅助服务器实际停机的原因)


但是,如果您有一个仲裁器,而次仲裁器无法到达主仲裁器,但它可以到达仲裁器,则问题在于主仲裁器,因此它必须成为新的主仲裁器。如果它无法到达主仲裁器,也不能到达仲裁器,则次仲裁器知道问题在于他是孤立/损坏的-较差的次仲裁器:(-因此他不能成为主服务器

假设您只有两台服务器,一台主服务器和一台辅助服务器

如果辅助服务器突然无法到达主服务器,则可能是主服务器停机(在这种情况下,辅助服务器应成为主服务器),但也可能是隔离辅助服务器的网络问题(这是辅助服务器实际停机的原因)


但是,如果您有一个仲裁器,而次仲裁器无法到达主仲裁器,但它可以到达仲裁器,则问题在于主仲裁器,因此它必须成为新的主仲裁器。如果它无法到达主仲裁器,也不能到达仲裁器,则次仲裁器知道问题在于他是孤立/损坏的-较差的次仲裁器:(-因此,他不能成为主要的

如果你把仲裁人带到其核心,那么它本质上是一个用于投票的无数据持有成员

仲裁器的一种情况如我在链接问题中所述:打破CAP的问题,但这不是它的真正目的,因为您可以轻松地用数据保持节点替换仲裁器,并具有相同的效果

但是,仲裁人有几个好处:

  • 小脚印
  • 没有数据
  • 不需要同步
  • 可以立即投票
  • 可以放在网络、应用服务器甚至其他辅助设备的任何位置,以增强网络的该部分(这将进入分区)
因此,仲裁器非常有用,即使在分区的一侧(即网络中没有分区)

现在来解释基本设置。不需要仲裁器,您可以为数据保留节点计算出它,但3个数据保留节点不是最小值(这是保持自动故障切换所需的最小值),2个数据保留节点和1个仲裁器实际上是最小值

现在回答:

换句话说,为什么主+辅助配置不够

因为如果其中一个失败了,只剩下50%的选票(2-1=1),而50%的选票不足以让MongoDB在一个成员中实际投票(根据
rs.config
中配置的可投票成员总数判断)

同样在本例中,MongoDB实际上并不知道最后一个成员是否是最后一个成员,它需要其他成员告诉它不是这样


所以,是的,这就是为什么你需要第三个人。

如果你把仲裁人放在核心位置,它本质上是一个没有数据的成员,用于投票

仲裁器的一种情况如我在链接问题中所述:打破CAP的问题,但这不是它的真正目的,因为您可以轻松地用数据保持节点替换仲裁器,并具有相同的效果

但是,仲裁人有几个好处:

  • 小脚印
  • 没有数据
  • 不需要同步
  • 可以立即投票
  • 可以放在网络、应用服务器甚至其他辅助设备的任何位置,以增强网络的该部分(这将进入分区)
因此,仲裁器非常有用,即使在分区的一侧(即网络中没有分区)

现在来解释基本设置。不需要仲裁器,您可以为数据保留节点计算出它,但3个数据保留节点不是最小值(这是保持自动故障切换所需的最小值),2个数据保留节点和1个仲裁器实际上是最小值

<