2017-05-17 19 views
0

我知道MongoDB的建议复制集合最小值为3MongoDB的两个节点部署

我可以使用两台服务器与4复制集MongoDB的安装,以防止写故障当一个节点下来?

我的想法是每个服务器假货上安装两个实例/摆脱它:

  • MongoDB的1

    • Replcation设置1(主)
    • Replcation设置2 (Secondary)
  • Mongodb 2

    • Replcation组3(次要)
    • Replcation组4(仲裁器)

如果一台服务器下来,它仍然有两个复制集它。

任何人都可以评论我的想法吗? 我想知道是否有任何问题需要考虑? 谢谢!

回答

1

这是一个坏主意。您的建议配置会产生适得其反的原因主要有两个:

  1. 运行two instances of MongoDB on the same hosts将导致他们既缓慢,笨拙地运行,内存,CPU,磁盘竞争I/O等
  2. 如果一个主机发生故障,另两个节点将能够继续复制,因为与运行了四个只有两个节点设置,你没有majority necessary to become primary

MongoDB是intended to be run effectively on multiple hosts,所以它是专为此而设计的;即使你能找到一种方法,鞋拔一个正常运作的副本集到两台主机,你会被工作对MongoDB的设计和挣扎,使其有效地开展工作。

真的,你最好的选择是运行在每个两台主机的单一的mongod实例,并运行第三(独立)主机上的仲裁者;这种normal 3-host configuration是实现数据复制和高可用性的有效且直接的方式。

+0

1)性能不是它的问题。 2)我想在每边添加6个节点和3个节点 –

+0

好的,我从URL中看到你的观点https://docs.mongodb.com/manual/core/replica-set-architectures/ 甚至如果我是如何尝试生产节点的数量是两个服务器,容错数不能成员的一半人数。 (这意味着如果我关闭服务器之一,它没有足够的多数选出新的主)。谢谢 –

0

请仔细阅读https://docs.mongodb.com/manual/replication/

不推荐偶数在一组成员。添加仲裁者的唯一理由是解决此问题并将成员数量增加1以使其成为奇数。根本不需要添加2个Arbiters。

类似地,将仲裁者与任何其他成员放到同一台服务器上是没有意义的。它非常轻便,因此您可以将它与应用程序服务器共同定位。

有2台数据库服务器的最佳副本集的配置将是:

  • MongoDB的1

  • MongoDB的2

    • 塞康D进制
  • 任何其他服务器

    • 仲裁者
+0

我不打算在其添加2个仲裁者。只有一个仲裁器 –

+0

我想部署两个节点只有MongoDB的故障转移支持。这个想法出现,似乎解决这个问题(单MongoDB实例将变为只读) –

+0

我必须让这个问题错了,但我读了它,你要创建一个副本有4名成员,其中之一是一个仲裁者共同设置 - 位于第二位,这是错误的。成员总数应为奇数。 –

0

简单的答案是,不,你不能做到这一点..

理由是“大多数”。如果你松动了这两个服务器中的一个,你没有在线投票。

这就是原因,为什么3最小。它可以是3个数据承载节点或2个数据承载节点和一个仲裁器。所有这些都有一票,如果你放弃其中一个,复制集仍然有2/3票是多数。喜欢3/5或4/7。

值1/2(或2/4)是不占多数。