我们应该在MongoDB和ElasticSearch中创建多少个复制集?

时间:2014-01-22 16:01:03

标签: mongodb symfony replicate

我正在使用MongoDB原则将ElasticSearch与我的symfony2应用程序集成 在这个tutorial中,它说我需要将我的独立实例转换为复制集
基本上,概念如下:应用程序询问MongoDB主服务器的数据,搜索功能需要询问辅助服务器以进行搜索。 我的复制集配置如下:

{
    "_id" : "rs0",
    "version" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "host" : "localhost:27017"
            }
    ]

} 我认为这是主服务器,我的问题是我需要创建另一台服务器吗?如果是,我该如何创建第二个复制服务器? 坦克很多!

1 个答案:

答案 0 :(得分:2)

根据您链接的教程,为了使ElasticSearch River正常工作,您需要将MongoDB配置为副本集。在副本集配置中,每个节点都有一个操作日志(oplog),它是已应用的所有操作(插入,更新,删除)的日志。可以使用tailable cursor读取oplog,以启用ElasticSearch River或MMS Backup等功能。

  

我的问题是我需要创建另一台服务器吗?

从技术上讲,副本集可以配置为单个节点(您已完成)。建议的最佳实践是拥有至少包含三个节点的副本集(主节点,辅助节点和仲裁节点或主节点和两个辅助节点),这将提供高可用性和数据的额外好处冗余。有关更多信息,请参阅MongoDB手册中的Replica Set Introduction

  

搜索功能需要询问辅助服务器以进行搜索。

默认情况下,MongoDB驱动程序指示所有写入&读取对主数据库的请求,为读取数据提供强一致性。如果从辅助节点读取数据,则数据最终是一致的。这意味着如果从主服务器到辅助服务器之间存在任何复制延迟,您可以从辅助服务器读取旧数据。

通常不建议在辅助节点上执行查询。在您的方案中,如果两台计算机都在容量上使用,并且您遇到故障或需要关闭计算机,那么您将没有足够的资源来为应用程序提供服务并执行搜索。您应该计划让您的主要资源有足够的资源来执行这两项功能。

至于将独立服务器迁移到副本集,您可以按照教程中描述的步骤进行操作:Convert a Standalone to a Replica Set

相关问题