【问题标题】:How to setup Solr Cloud with two search servers?如何使用两个搜索服务器设置 Solr Cloud?
【发布时间】:2015-10-24 07:57:05
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我的经验中的几个输入。

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

    定义一个 Master :- 将所有写入指向这里。如果这个 master 宕机了,你将无法再索引数据

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

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

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

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

    SolrCloud 怎么样?

    1. 这里没有 Master,因此您也可以实现写入的高可用性
    2. 无需担心如上所述的数据不一致,SolrCloud 架构会解决这个问题。

    什么最适合你。

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

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

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

    问候,

    阿尼什 N

    -让我们一起学习。

    【讨论】:

    • zookeeper 是存储配置文件的人,与 SolrCloud 中的 solr 相比。此外,它还知道每个节点的状态以及是否与谁是领导者、谁处于恢复状态等状态相同。当领导者宕机时,ZooKeeper 从 n 个副本中选出一个副本。
    • 独立 solr 是单个分片。是的,您可以将云设置为具有多个副本的单个分片,以实现高可用性
    • 是的,ZooKeeper 是集群的控制者。如果没有 ZooKeeper,您将无法在云模式下启动 solr,如果您启动它将使用内置的 zookeeper。即使 Zookeeper 在启动 Cluster 后关闭,Cluster 也可以维持读取。但是没有 zookeeper 就无法写入
    • Jetty 默认使用 SOLR。 Tomcat 是一个替代方案。它们都用于标准网络服务。 Quorom 是用于集群 ZooKeeper 的术语。由于 Solr Cluser 依赖于 ZooKeeper,因此成为单点故障。所以我们也必须Cluser ZooKeeper。用于生产的 ZooKeeper 的理想数量是 5。
    • 您可以将 ZooKeeper 保留在与 solr 节点相同的节点中,但这并不能实现高可用性,因为当节点关闭时 solr 和 ZooKeeper 都会关闭。但是,如果您有多个 ZooKeeper,则可以将每个 ZooKeeper 保存在 SOLR 节点之间的不同节点中。根据云,它允许我们通过更改 SOLR 实例 ZooKeeper 实例的端口,将 ZooKeeper 和所有 SOLR 实例集群在一个节点中。
    猜你喜欢
    • 2015-10-24
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2016-05-07
    相关资源
    最近更新 更多