简单的问题:如果您使用 cgroups 解决 mongodb 的内存饥饿问题并忽略并发 io 的方面,那么在三个集群中的相同节点上运行 mongodb 和 elasticsearch 是否愚蠢?
答案1
警告
问题很少提及所需的 IOPS、RAM 和 CPU 等事实,因此答案也不会太明确。
一般来说,将两个 IO/CPU/RAM 密集型工作负载放在同一个节点上是不好的,但我确实有处理与其他数据库(如 Redis 和 PostgreSQL)共享主机的 Elasticsearch 实例的经验,这些数据库由 cgroups/LXC 容器分隔。这是可以做到的,而且对于生产工作负载来说做得足够好,给定足够的原始资源。使用标准系统工具(如 vmstat、sar、iotop 等)监视 IO 和 RAM 使用情况很简单。您需要几千个 IOPS 潜力、几十 GB 的 RAM 和十几个 CPU 核心,但如果您可以负担得起一些大型主机,这是一个合理的架构。再说一次,如果您可以负担得起足够多的主机(例如,亚马逊的 i2.4xls),那么您可以负担得起更大的小型实例池(i2.xls)并独立运行 Elasticsearch 和 MongoDB,然后能够在将来扩展,这是更好的系统设计的一部分。