![Mongo 数据库副本与负载平衡 Web 服务器位于同一台机器上吗?](https://linux22.com/image/582046/Mongo%20%E6%95%B0%E6%8D%AE%E5%BA%93%E5%89%AF%E6%9C%AC%E4%B8%8E%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%8D%E4%BA%8E%E5%90%8C%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E5%90%97%EF%BC%9F.png)
我们正在测试在 Amazon EC2 上部署 Web 应用程序,该应用程序使用 MongoDB 作为数据库。Mongo 建议至少使用 3 个节点进行复制,以确保数据完整性。虽然这只是测试,但我们想通过复制进行测试,以了解系统如何处理故障,因此我们至少需要 3 个 EC2 实例。我还想看看 Web 负载平衡是否也能正常工作。
我的想法是创建 3 个中型 EC2 实例,所有实例都运行 MongoDB 和 Web 服务器。我们将使用负载均衡器在三台服务器之间分配 Web 请求,并配置 Mongo 以将它们用作副本以确保数据完整性。
这个计划有什么问题吗?
答案1
由于这是一个“测试”阶段,我们都知道测试是我们用于生产的模型,我要提醒您 MongoDB 占用大量内存,并使用文件系统缓存来映射文件。
如果您的 Web 应用程序也占用大量内存,并且没有足够的内存供您的应用程序和 MongoDB 运行,那么 MongoDB 将会受到影响,因为内核将因对内存中的私有/常驻页面的请求而驱逐 FS 缓存。
只要您密切关注内存使用模式(包括内核级缓冲区/缓存和 mongod 页面错误),就应该没问题。
答案2
似乎不适合测试 mongo 和副本集的故障转移。