如何使用两个搜索服务器设置Solr Cloud?

时间:2015-08-01 21:35:55

标签: solr solr4 solrcloud sunspot-rails sunspot-solr

您好我正在使用太阳黑子solr开发rails项目并配置Solr Cloud。 我的环境:rails 3.2.1,ruby 2.1.2,sunspot 2.1.0,Solr 4.1.6。

为什么选择SolrCloud:我需要更稳定的系统 - 搜索服务器经常进行维护,Web应用程序停止生产。因此,我考虑如何制作两个相同的搜索服务器而不是一个,以使系统更稳定:如果一台服务器将关闭,其他服务器将继续工作。

我找不到任何好的turtorial简单,易于理解和详细描述turtorial ... 我正在尝试在两台服务器上设置SolrCloud,但我不完全理解它是如何在内部工作的:

  • 在两台服务器之间同步数据(是自动操作吗?)
  • 在两台服务器之间平衡搜索请求
  • 当一台服务器突然停止工作时,其他服务器应成为主服务器(是自动操作吗?)
  • 是否有SolrCloud以外的其他功能?

1 个答案:

答案 0 :(得分:4)

在这里阅读更多关于SolrCloud的内容..! https://wiki.apache.org/solr/SolrCloud

来自我的经验的一些投入。

如果您的应用程序只是从SOLR读取数据并且没有写入SOLR(实时但您使用ETL进行索引),那么您可以选择主从属层次结构。

定义一个Master: - 将所有写入指向此处。如果此主服务器关闭,您将无法再索引数据

创建2个(或更多个)Slave: - 这是SOLR的一个功能,它将根据我们指定的时间间隔(从每20秒说一次)来处理来自主服务器的数据。

创建基于从属的负载均衡器,并指示您的应用程序从负载均衡器读取数据。

优点: 通过上述设置,您没有Master(数据写入)的高可用性,但在最后一个从站关闭之前,您将拥有高可用性数据。

缺点: 假设一个奴隶倒下了,你在一小时后买回来,这个奴隶将在其他奴隶后面一小时。因此,它的手动任务是在添加回ELB之前检查其他从站之间的数据一致性。

SolrCloud怎么样?

  1. 这里没有Master,所以你也可以实现Writes的高可用性
  2. 如上所述,无需担心数据不一致,SolrCloud架构将负责这一点。
  3. 什么适合你。

    1. 使用3个节点Quorom
    2. 定义外部Zookeeper
    3. 定义至少2个SOLR服务器。
    4. 将当前索引拆分为2个分片(默认情况下,每个分片将在步骤2中定义的2个solr节点中各占一个
    5. 将副本定义为2(这将为每个节点中的分片创建副本)
    6. 定义LB以指向上面的solr节点。
    7. 将您的Solr输入和应用程序指向此LB.
    8. 通过上述设置,您可以维持任一节点的故障转移。

      如果您需要更多相关信息,请与我们联系。

      此致

      Aneesh N

      - 让我们一起学习。