【问题标题】:Can a sharded Mongo database be split (mongos and mongod) between Windows and Linux?可以在 Windows 和 Linux 之间拆分分片 Mongo 数据库(mongos 和 mongod)吗?
【发布时间】:2013-10-29 01:39:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • 理论上没有什么能阻止你,因为机器将通过标准化协议进行通信
  • 我能预见的唯一问题是您在尝试维护这些系统时很可能会遇到的头痛问题:P 除此之外,@Sammaye 是正确的:只要实例没关系能够相互交流。 IE 正确的 IP、端口、防火墙设置等...
  • @Lix:什么头疼?我不明白为什么拥有异构基础架构比同构基础架构需要更多的维护?
  • @mnemosyn - 这(大部分)是个玩笑。我猜还有一些其他要求/限制会阻止 OP 对所有实例使用相同或相似的主机...
  • 我们已经看到,如果集群(也是 mongos)中的 mongo db 版本(即使是次要版本)不同,它可能会遇到问题。否则它应该是工作。你试过这个,你有什么问题吗?

标签: mongodb


【解决方案1】:

没有理由不这样做。

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

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

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

【讨论】:

  • 这是运行虚拟化重型数据库服务器的一个有趣点。除此之外,在虚拟机上运行数据库会增加监控磁盘 IO 等内容的复杂性,尤其是当您无法访问运行虚拟机的 (ESX) 集群时。
猜你喜欢
  • 2011-06-20
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
相关资源
最近更新 更多