目前我已经有服务器A和服务器B与下面的mongod实例运行:
服务器A
服务器B
当服务器A发生故障时,服务器B没有select自己作为主服务器。 因此,由于数据库不可用,我的整个应用程序都处于脱机状态。
我的问题是,在不增加物理服务器数量的情况下,如何确保服务器B在服务器A停机时能够正常工作?
以下是一个好主意吗?
服务器A
服务器B
在哪里我没有添加一个仲裁者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都涉及到另一台机器。