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

Hosting Replicaset and Config servers MongoDB on other servers?

我应该将副本集和配置服务器放在不同的服务器上吗?或者在一台服务器上有一个副本集和一个配置服务器?我可以在一台服务器上拥有所有副本集,而在另一台服务器上拥有所有配置服务器吗? (这是否违背了分片的目的?)

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

但是,当您只有两台服务器并且必须在复制和分片之间做出选择时,您可以通过创建两个分片来获得两全其美的效果,其中每个分片都有一个辅助 运行 在服务器上另一个分片的主要部分。这样,当一切正常时,您可以同时拥有 performance-improvement,但不会在一台服务器出现故障时失去对一半数据的访问权。

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