作为一个概念验证类型的项目,我设置了一个分片的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上运行它会更便宜。
答案 0 :(得分:2)
没有理由不这样做。
MongoDB集群通过网络进行通信。他们甚至不知道集群或副本集的其他成员运行的操作系统。但请记住,异构架构存在一些维护问题:
顺便说一句,虚拟化重型数据库服务器通常不是一个好主意。任何以磁盘IO为瓶颈的应用程序在裸机上运行得更好(根据系统管理员,您将在serverfault上找到,而不是在stackoverflow上)。