副本集架构 - 仲裁者要求

时间:2017-04-21 15:37:35

标签: mongodb replicaset mongodb-replica-set database

有效处理灾难恢复(DR)情况所需的副本集成员数应该是多少。目前我们使用3节点副本集(1个主节点,1个副节点在同一个区域,1个副节点在DR区域)。 /> 我们计划在其中添加2个仲裁器,以提高其容错能力 使用多个仲裁实例是一种好习惯吗? 在DR区域中创建仲裁实例会更好吗?

2 个答案:

答案 0 :(得分:1)

正如JJussi指出的那样,添加多个仲裁器根本无济于事,但添加更多节点(数据承载和/或仲裁器)以实现最大弹性和可用性可能会很有用。

您目前的安排是这样的:

Existing replicaset configuration

如果区域1中的数据中心发生故障,则DR区域中的节点将无法升级为主节点,因为它无法控制多数:

DR region cannot provide high availability

即使您添加了另一个数据承载节点和仲裁器,如果它们位于相同的两个区域,您也会遇到同样的问题。

相反,我建议您配置的是区域1中现有的两个节点,向DR区域添加第四个数据承载节点,但也要添加仲裁器,但要确保仲裁器再次位于不同的区域:

5-node replicaset configuration with high-availability

这样,即使数据中心在区域1或DR区域中发生故障,其他区域中的节点也能够 - 在仲裁器的帮助下 -  命令多数,并继续工作:

Continued operation despite the loss of an entire data-centre

答案 1 :(得分:0)

仲裁程序不会增加容错能力,因为它们不保存数据。您无需在当前设置中添加仲裁器,因为您已经有了奇怪的投票数。您当前的节点数(三)对于DR来说是完美的,特别是如果所有三个节点都在不同的数据中心,甚至其中两个节点位于相同的地理区域。

当然,您总是可以将一个节点(然后您需要仲裁者)添加到其他某个区域,但通常三个独立的节点是完美的DR情况。如果您当前的所有节点都在美国,那么您可以拥有位于欧洲的“一半”(足够大多数)节点......