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

How to setup Solr Cloud with two search servers?

您好,我正在使用 sunspot solr 开发 rails 项目并配置 Solr Cloud。 我的环境:rails3.2.1,ruby2.1.2,sunspot 2.1.0,Solr 4.1.6.

为什么选择 SolrCloud:我需要更稳定的系统 - 通常搜索服务器会进行维护,而 Web 应用程序会停止生产。所以,我在想如何做两台相同的搜索服务器而不是一台,让系统更稳定:如果一台服务器宕机,其他的会继续工作。

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

在此处阅读有关 SolrCloud 的更多信息...! https://wiki.apache.org/solr/SolrCloud

我的一些经验。

如果您的应用程序只是从 SOLR 读取数据而不写入 SOLR(实时但您使用 ETL 左右进行索引)那么您可以直接使用主从层次结构。

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

创建 2 个(或更多)从站:- 这是 SOLR 的一项功能,它将根据我们指定的时间间隔(比如每 20 秒)从主站同步数据

创建一个基于 slave 的负载均衡器,并让您的应用程序从负载均衡器读取数据。

优点: 通过上述设置,您没有主控(数据写入)的高可用性,但在最后一个从属设备出现故障之前,您将具有高可用性的数据。

缺点: 假设一个 slave 挂了,你在一个小时后把它买回来,这个 slave 就会落后其他 slave 一个小时。因此,在添加回 ELB 之前,它需要手动检查其他从属之间的数据一致性。

SolrCloud 怎么样?

  1. 这里没有Master,所以你也可以实现Writes的高可用
  2. 无需担心我上面描述的数据不一致问题,SolrCloud 架构会解决这个问题。

什么最适合你。

  1. 定义一个具有 3 个节点的外部 Zookeeper Quorom
  2. 定义至少 2 个 SOLR 服务器。
  3. 将您的当前索引拆分为 2 个分片(默认情况下,每个分片将驻留在步骤 #2 中定义的 2 个 solr 节点中各占一个
  4. 将副本定义为 2(这将为每个节点中的分片创建副本)
  5. 定义一个LB指向上面的solr节点。
  6. 将您的 Solr 输入和应用程序指向此 LB。

通过以上设置,您可以维持任一节点的故障转移。

如果您需要这方面的更多信息,请告诉我。

此致,

Aneesh N

-让我们一起学习。