我应该使用2台服务器复制数据库设置运行多less个mongod实例?

目前我已经有服务器A和服务器B与下面的mongod实例运行:

服务器A

  1. mongod服务器(通常是PRIMARY)
  2. mongod仲裁器

服务器B

  1. mongod服务器(通常是SECONDARY)

当服务器A发生故障时,服务器B没有select自己作为主服务器。 因此,由于数据库不可用,我的整个应用程序都处于脱机状态。

我的问题是,在不增加物理服务器数量的情况下,如何确保服务器B在服务器A停机时能够正常工作?

以下是一个好主意吗?

服务器A

  1. mongod服务器1A
  2. 蒙哥通服务器2A
  3. mongod arbiterA

服务器B

  1. mongod服务器1B
  2. mongod服务器2B
  3. mongod arbiterB

在哪里我没有添加一个仲裁者B,因为这将使服务器的总数甚至。 问题是:这是服务器Aclosures时让服务器B接pipe的最有效方式吗? 或者我可以删除一些服务器来保存RAM / CPU /硬盘?

与mongod进程在同一台机器上进行仲裁并不是很有效。 你有第三个无关的服务器来运行仲裁者吗?

(logging在这里: http : //www.mongodb.org/display/DOCS/Replica+Set+Tutorial#ReplicaSetTutorial-Runningwithtwonodes )

在同一台服务器上运行多个mongod进程会导致性能问题。 另外,在同一台机器上有两个可用的mongod进程和一个仲裁器,意味着如果两个物理服务器彼此断开连接,他们将select一个本地主节点。

当A断电时,服务器B接pipe的最有效的方法是将当前的仲裁器移动到B.然而,这意味着如果B失败,A将不再是主要的,因为它将无法形成多数。

有两种select – 有另一个仲裁器实例准备好进行A / B,并且当没有将该集合添加到集合中并且移除另一个仲裁器时重新configuration该集合,或者重新启动A / B作为副本之外的独立mongod一旦另一个下来,一旦事情恢复健康,重新configuration。

有了2台机器,你将一直遇到这个问题,必须手动介入才能恢复设置。 我能想到的每个自动解决scheme都涉及到另一台机器。