如何使用两个搜索服务器设置 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 功能?
在此处阅读有关 SolrCloud 的更多信息...! https://wiki.apache.org/solr/SolrCloud
我的一些经验。
如果您的应用程序只是从 SOLR 读取数据而不写入 SOLR(实时但您使用 ETL 左右进行索引)那么您可以直接使用主从层次结构。
定义一个 Master :- 将所有写入指向这里。如果此主服务器已关闭,您将无法再为数据编制索引
创建 2 个(或更多)从站:- 这是 SOLR 的一项功能,它将根据我们指定的时间间隔(比如每 20 秒)从主站同步数据
创建一个基于 slave 的负载均衡器,并让您的应用程序从负载均衡器读取数据。
优点:
通过上述设置,您没有主控(数据写入)的高可用性,但在最后一个从属设备出现故障之前,您将具有高可用性的数据。
缺点:
假设一个 slave 挂了,你在一个小时后把它买回来,这个 slave 就会落后其他 slave 一个小时。因此,在添加回 ELB 之前,它需要手动检查其他从属之间的数据一致性。
SolrCloud 怎么样?
- 这里没有Master,所以你也可以实现Writes的高可用
- 无需担心我上面描述的数据不一致问题,SolrCloud 架构会解决这个问题。
什么最适合你。
- 定义一个具有 3 个节点的外部 Zookeeper Quorom
- 定义至少 2 个 SOLR 服务器。
- 将您的当前索引拆分为 2 个分片(默认情况下,每个分片将驻留在步骤 #2 中定义的 2 个 solr 节点中各占一个
- 将副本定义为 2(这将为每个节点中的分片创建副本)
- 定义一个LB指向上面的solr节点。
- 将您的 Solr 输入和应用程序指向此 LB。
通过以上设置,您可以维持任一节点的故障转移。
如果您需要这方面的更多信息,请告诉我。
此致,
Aneesh N
-让我们一起学习。
您好,我正在使用 sunspot solr 开发 rails 项目并配置 Solr Cloud。 我的环境:rails3.2.1,ruby2.1.2,sunspot 2.1.0,Solr 4.1.6.
为什么选择 SolrCloud:我需要更稳定的系统 - 通常搜索服务器会进行维护,而 Web 应用程序会停止生产。所以,我在想如何做两台相同的搜索服务器而不是一台,让系统更稳定:如果一台服务器宕机,其他的会继续工作。
我找不到任何简单易懂且描述详细的好教程... 我正在尝试在两台服务器上设置 SolrCloud,但我不完全了解它在内部是如何工作的:
- 在两台服务器之间同步数据(是自动动作吗?)
- 平衡两个服务器之间的搜索请求
- 当一台服务器突然停止工作时,另一台应该成为主人(这是自动动作吗?)
- 是否有未列出的 SolrCloud 功能?
在此处阅读有关 SolrCloud 的更多信息...! https://wiki.apache.org/solr/SolrCloud
我的一些经验。
如果您的应用程序只是从 SOLR 读取数据而不写入 SOLR(实时但您使用 ETL 左右进行索引)那么您可以直接使用主从层次结构。
定义一个 Master :- 将所有写入指向这里。如果此主服务器已关闭,您将无法再为数据编制索引
创建 2 个(或更多)从站:- 这是 SOLR 的一项功能,它将根据我们指定的时间间隔(比如每 20 秒)从主站同步数据
创建一个基于 slave 的负载均衡器,并让您的应用程序从负载均衡器读取数据。
优点: 通过上述设置,您没有主控(数据写入)的高可用性,但在最后一个从属设备出现故障之前,您将具有高可用性的数据。
缺点: 假设一个 slave 挂了,你在一个小时后把它买回来,这个 slave 就会落后其他 slave 一个小时。因此,在添加回 ELB 之前,它需要手动检查其他从属之间的数据一致性。
SolrCloud 怎么样?
- 这里没有Master,所以你也可以实现Writes的高可用
- 无需担心我上面描述的数据不一致问题,SolrCloud 架构会解决这个问题。
什么最适合你。
- 定义一个具有 3 个节点的外部 Zookeeper Quorom
- 定义至少 2 个 SOLR 服务器。
- 将您的当前索引拆分为 2 个分片(默认情况下,每个分片将驻留在步骤 #2 中定义的 2 个 solr 节点中各占一个
- 将副本定义为 2(这将为每个节点中的分片创建副本)
- 定义一个LB指向上面的solr节点。
- 将您的 Solr 输入和应用程序指向此 LB。
通过以上设置,您可以维持任一节点的故障转移。
如果您需要这方面的更多信息,请告诉我。
此致,
Aneesh N
-让我们一起学习。