我是 Mongodb 和 EC2 的新手。如果我使用以下单个 MongoDb 服务器:
高内存超大型实例 17.1 GiB 内存、6.5 ECU(2 个虚拟核心,每个核心有 3.25 个 EC2 计算单元)、420 GB 本地实例存储、64 位平台
作为外行,如果我们量化 I/O,数据以 MB/秒为单位。MongoDB 服务器可以轻松处理多少 I/O 事务,而不会被烧坏。
考虑 AWS 市场上可用的 Ubuntu 和 MongoDb 版本的 EC2 服务器的默认设置。
答案1
使用 AWS,您最好使用 mongo 对数据进行分片并进行水平扩展。如果您是初学者,这对我来说似乎有点大材小用。此外,使用 mongo 时您需要复制数据库。因此,您至少需要另一台具有相同规格的服务器。
答案2
就 IO 而言,除了可用的带宽外,它与实例大小几乎没有关系。解释一下,当您使用 EC2/AWS 时,这意味着您将使用 EBS 进行存储,并使用网络来保存数据。因此,建议在多个卷中使用 RAID 10,以便您在其中一个 EBS 卷出现问题时(相信我,这种情况确实会发生),对坏卷进行条带化(性能)、镜像(冗余)和故障恢复(否则,您的阵列将与最慢的磁盘一样慢)。
每本白皮书(将很快更新新信息),EBS 卷可以提供
大约 100 IOPS,而具有 10 个或更多连接的 EBS 磁盘阵列的单个实例通常可以达到持续 1,000 IOPS
如果你使用预配置 IOPS例如,那么当然一切都会改变,这也意味着您获得一个用于 IO 的专用网络接口,从而消除了与主机上正常流量的任何争用。
最后剩下的选择是基于 SSD 的实例,其性能甚至远远超过了预配置的 IOP 功能,但价格差异也相当大。
通常,使用 MongoDB 时,您最终会根据 RAM 来确定大小(如果可能的话,将工作集保存在 RAM 中通常被认为是至关重要的),但是如果您不能并且需要定期访问磁盘,那么您可以从 EBS 中挤出的数量将非常重要。
我最近提出所有这些内容的概述,在最近的悉尼/墨尔本 MongoDB 活动中重点介绍了 AWS。您可以在此处找到幻灯片:
http://www.10gen.com/presentations/mongodb-sydney-november-2012/operating-mongodb-cloud
答案3
这取决于您正在运行的数据库的大小。
如果您正在运行一个小型 mongoDB,那么很快大多数查询都会被缓存到内存中,并且您的 mongoDB 将不再触及磁盘。
如果它是一个更大的数据库并且钱对你来说不是什么大问题,那么我建议你应该选择高 I/O 实例,这些实例装有 SSD,最适合运行 mongoDB 服务器。