在Amazon EBS上使用预配置IOPS时,是否需要在Mongo上运行RAID 10?

zer*_*llz 5 mongodb amazon-web-services

我正在尝试在亚马逊上设置一个生产mongo系统,用作实时指标系统的数据存储区,

我最初在市场中使用了MongoDB AMI [1],但我很困惑,因为只有一个数据EBS.我读过Mongo建议在EBS存储上使用RAID 10(每台服务器上有8个EBS).另外,我已经读过,生产的最低限度是主要/次要的仲裁.RAID 10仍然是推荐的设置,还是一个配置的IOPS EBS足够?

请指教.我们是一家小商店,那么我们可以逃脱的最低限度是什么,并且仍然相当安全?

[1]具有1000 IOPS的MongoDB 2.4 - 数据:200 GB @ 1000 IOPS,日志:25 GB @ 250 IOPS,日志:10 GB @ 100 IOPS

zer*_*llz 6

所以,我刚刚与亚马逊系统工程师打电话,他有一些与这个问题相关的有趣见解.

  1. 首先,如果你打算使用RAID,他说只是做条带化,因为无论如何EBS模块都在幕后反映出来,所以raid 10对他来说似乎有些过分.

  2. 标准EBS卷倾向于很好地处理尖刺流量(它可能能够处理1K-2K iops几秒钟),但最终它将平均减少100个iops.一个建议是使用许多小型EBS卷并对其进行条带化以获得更好的iops吞吐量.

  3. 他的一些客户只使用EC2图像上的短暂存储,但随后在可用性集中有多个(3-5)节点.短暂存储是物理机器上的存储.显然,如果您将EC2实例与SSD存储一起使用,则最多可以获得20K iops.

  4. 一些客户将为主设备执行一个巨大的EC2映像w/ssd,然后为辅助设备执行较小的EC2 w/EBS.主计算机性能良好,但故障转移可用,但性能下降.

  5. 确保在启动实例时检查"EBS Optimized".这意味着您有一个专用的EBS存储通道(任何类型),而不是共享NIC.


  6. 重要!预配置的IOPS EBS很昂贵,当您关闭它们所连接的EC2实例时,账单不会关闭.(这在测试时很糟糕)他的建议是拍摄EBS卷的快照,然后删除它们.当您再次需要它们时,只需创建新的预配置IOPS EBS卷,还原快照,然后重新配置EC2实例以附加新存储.(它的工作量应该超出应有的水平,但值得一提的是不要让傻瓜大肆宣传IOPS法案.

  • 关于1:您可能会对此感到满意,直到亚马逊向您发送邮件,其中一个驱动器后面的硬件已经崩溃.这可能比你想象的要快. (2认同)

小智 0

我也有同样的问题。Amazon 和 Mongodb 都尝试在预置 IOP 上进行大量营销,考虑其相对于标准 EBS 卷的优势。我们在 m2.4xlarge aws 实例上运行 prod 实例,每个服务设置 1 个主实例和 2 个辅助实例。在利用率最高的服务集群中,除了一些缓慢的查询之外,监控图表根本没有显示任何性能下降。页面错误很少发生,每天也会出现一到两次 0.0001 到 0.0004 次错误。后台刷新以毫秒为单位,锁和队列到目前为止处于可管理的水平。主节点上的 I/O 等待时间始终在 0 到 2% 之间,大部分小于 1,并且 %idle 稳定保持在 90% 以上。鉴于我们仍有预算来改善任何潜在的性能拖累,我是否还需要考虑预配置的 IOP?任何指导将不胜感激。