在其他服务器上托管Replicaset和Config服务器MongoDB?

时间:2015-12-29 05:28:01

标签: mongodb sharding

我应该将replicasets和配置服务器保存在不同的服务器上吗?或者在一台服务器上有一个replicaset和一个配置服务器?我可以在一台服务器上安装所有复制副本,在另一台服务器上安装所有配置服务器吗? (这是否会破坏分片的目的?)

1 个答案:

答案 0 :(得分:1)

分片的目的是在多个服务器上分配负载。复制的目的是(大部分)冗余,允许一台服务器在服务器因某种原因脱机时取代另一台服务器。显然,在任何一种情况下,在同一服务器上运行多个实例都没有多大意义。所以是的,它会破坏分片的目的。

但是,当您只有两台服务器并且必须在复制和分片之间进行选择时,您可以通过创建两个分片来实现两全其美,其中每个分片都有一个辅助节点,该辅助节点在另一个分片的主节点服务器上运行。这样,当一切都运行正常时,您可以获得性能提升,但当一台服务器出现故障时,不会失去对一半数据的访问权限。

关于配置服务器:MongoDB recommends to make them a separate replica-set which runs on separate servers。但是当你达到预算时,技术上应该可以将该副本集放在运行实际数据库的同一硬件上。配置服务器仅在mongos进程(重新)启动或块迁移发生时才需要,并且在其余时间相对空闲。不幸的是,块迁移也是涉及分片非常繁忙的阶段,因此在同一硬件上运行配置服务器会使块迁移期间性能下降甚至更糟。