【发布时间】:2018-06-08 05:29:33
【问题描述】:
我目前在 MongoDB 和 Elasticsearch 作为日志记录和分析平台的后端之间做出决定。我计划使用由 5 台 Intel Xeon Quad Core 服务器组成的集群,每台服务器配备 64GB RAM 和 500GB NVMe 驱动器。使用 1 个副本集,我猜它应该支持 1TB+ 的数据。
根据我在 Elasticsearch 上阅读的内容,上述服务器的推荐设置为 5-10 个分片,但如果不进行大规模迁移,将来无法增加分片。因此,也许我可以为同一个索引向集群添加 5 个以上的服务器/节点,但不是 10 或 20 个,因为我无法创建更多的分片来分布在新的节点/服务器上 - 对吗?
MongoDB 似乎可以根据键值自动管理分片,并在添加更多节点时重新分配这些分片。那么这是否意味着我将来可以在集群中再添加 50 台服务器,而 MongoDB 会很乐意将这个索引中的数据分布到所有服务器上?
我现在基本上只需要 1TB 的存储空间,但不想让自己陷入困境,如果这 1 个数据集最终增长到 100TB。
如果不在一开始就使用 100 个分片启动 Elasticsearch,这似乎是低效和不好的做法,如何才能将这个单一数据集扩展到超过 5/10 个服务器?
【问题讨论】:
-
如果您使用基于时间的索引,则无需立即为 1TB 负载调整索引大小。如果第一天/周/月(无论您选择什么时间增量),您只有 X GB 的数据,然后相应地调整大小,并且对于下一个时间增量,您可以增加分片的数量。我就是这样处理这种情况的。不过,您的问题中有太多未知数,无法冒险研究真实数字。
标签: mongodb elasticsearch scaling