4

作为一个概念证明类型的项目,我建立了一个分片 MongoDB,只有两个分片和三个运行 mongos 实例的服务器。所有这些都在它们自己的 Windows 服务器上,但我想尝试在 Linux 系统上运行集群,因为我看到一些奇怪的行为,我认为这可能与系统都在企业 ESX 服务器。另外,我只是好奇。

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

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

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

4

1 回答 1

2

没有理由不这样做。

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

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

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

于 2013-10-28T17:39:41.283 回答