可以在Windows和Linux之间拆分分片的Mongo数据库(mongos和mongod)吗?

时间:2013-10-28 14:12:23

标签: mongodb

作为一个概念验证类型的项目,我设置了一个分片的MongoDB,只有两个分片,三个服务器运行mongos实例。所有这些都在他们自己的Windows服务器上,但我想尝试在Linux系统上运行集群,因为我看到一些奇怪的行为,我认为可能与事实相关系统都在公司ESX服务器上的VM上运行。而且,我只是好奇。

在阅读了尽可能多的文档之后,我发现将查询分派给正确的分片的“mongos”实例是轻量级的,通常可以在应用程序服务器或具有mongod实例的系统上运行({ {3}})。

我的问题是,可以配置MongoDB以便 mongos 实例在Windows服务器上运行,而 mongod 实例(分片) )在Linux系统上运行? mongos 实例是否仍然可以向Shards发送查询?

在我的情况下这有利的一个原因是我的应用程序是一个.Net Web API,我想在IIS中托管,所以它必须在Windows上运行。在Linux上运行分片的好处可能是一个不正确的假设,即Linux系统比Windows服务器需要更少的开销,这意味着如果从云提供商在VM上运行它会更便宜。

1 个答案:

答案 0 :(得分:2)

没有理由不这样做。

MongoDB集群通过网络进行通信。他们甚至不知道集群或副本集的其他成员运行的操作系统。但请记住,异构架构存在一些维护问题:

  • 数据库的所有成员必须具有相同的版本才能正常协同工作。这意味着您需要同时更新所有内容。不同的操作系统为此增加了不必要的复杂性。
  • MongoDBs进程在不同平台上运行时可能具有不同的性能特征。这使得负载平衡变得更加困难(但也开辟了新的可能性)
  • serverfault.com上的人可以解释得比我们好得多。

顺便说一句,虚拟化重型数据库服务器通常不是一个好主意。任何以磁盘IO为瓶颈的应用程序在裸机上运行得更好(根据系统管理员,您将在serverfault上找到,而不是在stackoverflow上)。