用于分片+冗余MongoDB环境的硬件

use*_*800 6 hardware performance mongodb

我正在尝试从头开始规划一个新的数据库环境,我想知道需要多少台服务器以及它们应该提供多少性能.

由于我希望它快速,我正在考虑使用SSD内存和大量RAM.但是,闪存很昂贵,可以弥补服务器成本的最大部分.因此,整个系统应该从一开始就设置为水平扩展,因此当我需要更多存储/性能时,我可以添加更多节点.

为了开始,我正在考虑使用2个分片,每个分片由主设备和副本从设备组成,以实现冗余.MongoDB文档建议使用1个主服务器和2个服务器,但我担心这将不在可用预算中,因为这些服务器中的每一个都将配备大约200 GB的RAM和6x400 GB的SSD作为Raid 10.

使用分片时,还建议使用3个配置服务器来实现故障保护/高可用性.与上面相同,我认为1个主人和1个奴隶作为开始.

  • 您建议使用什么类型的硬件来配置服务器?它们在cpu/memory/harddisk方面是否应该与shard-nodes的性能相同?或者我可以将它们放在虚拟化或更便宜的硬件上吗?
  • 我描述的设置是否有意义?在分片节点上RAM与硬盘的比率如何?目前,将两倍数量的光盘放入1个碎片(1个主机,1个从机)并跳过分片直到我真正需要它可能会更容易和更便宜.但是(如上所述) - 系统应该从一开始就准备好进行分片,因为存储需求可能会在一夜之间发生变化.或者是否可以将其设置为全部,但现在仅在1个分片上运行?
  • 由于我只打算使用2台而不是3台服务器来实现高可用性/故障保护,我可能也需要仲裁器.他们还需要专用硬件吗?或者我可以在为配置服务器和分片节点提供服务的虚拟mashine中使用一个仲裁器吗?或者您使用3个单独的服务器进行冗余,您认为绝对必须这样做?

Chr*_*ett 5

摇滚.听起来像一个很棒的设置.鉴于您的配置选择,我无法想象预算会过多地限制您的选择.

  • 配置服务器不需要专用的物理服务器.这些运行相当轻松.您mongos和配置服务器之间需要低延迟.您将始终希望确保主机可靠,并为灾难做好准备.确保仔细检查分片环境的备份过程.备份需要在分片群集的移动部分之间进行协调.如果可能,请在同一数据中心的虚拟服务器上运行配置服务器.

  • 是的,如果您要在一台计算机上运行多个分片,您所描述的硬件是有意义的.这台功能强大的机器上的单个MongoDB将使机器大部分处于空闲状态.单个mongod进程不能使用那么多的RAM,I/O或CPU.你会想要"核心碎片"主机.在MongoHQ,我们通过运行各做mongod一个容器,我们可以从其他情况下在同一台机器上的隔离.根据您的规范,您可以在单个主机上运行多达10个分片,如果您想要拉伸主机,则可以运行更多分片.

  • 您可以使用单个分片启动此操作,然后再迁移到分片群集.这是我们推荐的分片方法:除非必须,否则不要进行分片.通过延迟分片,可以提高对系统进行更改的灵活性.当分片到位,你犯一个特定的路径,没有灵活性(当你知道未来是好的).通过延迟分片,你没有权衡.

  • 仲裁者不需要专用硬件.您可以在虚拟机上运行它们.这些不需要相同级别的备份要求,但应具有良好的正常运行时间.

  • 使用3台服务器并不是实现正常运行时间的必要条件.但是,当一个数据主机停机几个小时后,您将被降级为单个数据主机.在降级到单个数据主机的同时,单个主机可以正常工作.因为您只有一秒钟的数据在运行,所以您的中断风险更高.话虽如此,对于大多数用例来说,2个节点加一个仲裁器是可以的,并且如果其中一个数据节点出现故障,它们将保持运行状态.

希望这可以帮助!我们在MongoHQ上运行类似的配置,并且非常满意我们从主机获得的性能水平.