请考虑以下设置:
有2个物理服务器设置为常规mongodb复制集(包括仲裁进程,因此自动故障转移将正常工作).
现在,据我所知,大多数实际工作将在主服务器上完成,而奴隶主要只是努力保持其数据集同步.
以同样的方式在同一个2服务器上设置另一个复制集的方式将分片引入此设置是合理的,这样每个服务器都有一个作为主服务器运行的mongod进程和一个作为辅助服务器运行的进程.
预期的结果是两个服务器将共享实际查询/插入的工作量,而两者都是up.在一台服务器发生故障的情况下,整个设置应优雅地故障转移以继续运行,直到另一台服务器恢复.
除了设置和进程数(mongos/configservers/arbiters)的总体开销之外,此设置是否有任何缺点?
那肯定会奏效.我之前在#mongodb IRC频道中问了一个问题,就是在一台机器上运行多个mongod进程是不是一个坏主意.答案是"只要你有RAM/CPU /带宽,就疯了".
值得注意的是,如果您正在寻找高性能读取,并且不介意写入速度稍慢,您可以:
您的写入是否处于"安全模式",写入在传播到N个服务器之前不会返回(在这种情况下,其中N是副本集中的服务器数量,因此所有这些都是)
在连接代码中设置适合驱动程序的标志,以允许从从站读取.
这将使您获得类似于MySQL的集群设置 - 在主服务器上写一次,但任何从服务器都有资格读取.在你有更多读取而不是写入(例如,一个数量级)的情况下,这可能是更高的性能,但我不知道当节点发生故障时它的行为如何(因为写入可能会停止尝试写入到3个节点,但只有2个节点,等等 - 需要测试).