Solrcloud 多核配置

Solrcloud multicore configuration

我有一个独立的 Solr 实例,它有 4 个不同的内核,使用嵌入式 Jetty 服务器运行良好。我为 v4.10.3 配置了内核,但自从我移至 v5.1 后,一切似乎都运行良好,无需任何更改。

在投入生产之前,我需要将其设置为 Solrcloud 安装,最初有 2 个节点(两台不同的机器),每个节点 1 个分片 (为了简单起见).我一直在努力让它工作,但我没能做到。

我试过 运行 像这样(我认为使用 start.jar 不是首选方式),读到 Solr 将在任何嵌套文件夹中查找多个配置的核心(适用于独立的 Solr):

java -DzkRun -DnumShards=2 -Dbootstrap_confdir=solr/ -jar start.jar

但这没有用,它没有找到所需的 solrconfig.xml 文件。

我的 Solr 目录如下所示:

我的solr.xml文件是标准文件:

<solr>

  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8983}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>

</solr>

每个核心看起来像这样:

而core.properties只有核心名称:

name=users

我的问题是:

SolrCloud 不使用存储在核心 conf 目录中的配置文件。为了使您的核心在 SolrCloud 结构中可见,您需要将配置文件上传到 ZooKeeper 并让它为您管理文件。每当 Solr 实例出现时,它都会获取存储在 ZooKeeper 中的配置文件。这样你的核心不需要有 conf 目录来工作。要将核心配置文件上传到 ZooKeeper,请按照下面的 link 并查看 Upload a configuration directory

https://cwiki.apache.org/confluence/display/solr/Command+Line+Utilities

在 SolrCloud 中,每个 Core 都将成为一个 Collection

每个集合都有自己的一组配置文件和数据。

您可能会发现这很有帮助 Moving multi-core SOLR instance to cloud

Solr 5.0(更高版本)对如何使用分片创建 SolrCloud 设置以及如何添加集合等进行了一些更改

下面列出的所有内容都是我对《Solr 参考指南》的理解。我强烈建议您彻底阅读它。 https://cwiki.apache.org/confluence/display/solr/Apache+Solr+Reference+Guide

我在 Linux(CentOS) 服务器上设置我的服务器,但这些步骤也可用于在 Windows 系统上设置 solr。例如,有 solr.cmd 文件而不是 solr.sh

以下是我创建简单的两个分片 SolrCloud 设置所遵循的步骤。

  • 设置动物园管理员整体。我假设您正在尝试使用 在 solr 中嵌入 ZK。对于生产系统,它是高度 建议创建一个外部 ZK 集成。您可以在 this section of reference guid

  • 中找到安装外部集成的步骤
  • 将 solr 下载到 /opt 文件夹。

  • 仅提取安装文件。

    tar xzf solr-5.0.0.tgz solr-5.0.0/bin/install_solr_service.sh --strip components=2

  • 此命令将在您的系统上安装 solr

    sudo bash ./install_solr_service.sh solr-5.0.0.tgz

  • 以上命令将创建一个名为 "solr" 的新用户(如果不存在)。

  • 这些是它将采用的一些默认选项。您可以在 /var/solr/solr.in.sh 中查看。这是包含文件,您可以在其中指定其他选项。

        * SOLR_PID_DIR=/var/solr
        * SOLR_HOME=/var/solr/data
        * LOG4J_PROPS=/var/solr/log4j.properties
        * SOLR_LOGS_DIR=/var/solr/logs
        * SOLR_PORT=8983
    
  • 运行 install_solr_service start 上面的步骤会启动一个solr服务器。在进行以下任何更改之前,使用 service solr stop 停止服务器。

  • 更改Java堆值

    SOLR_HEAP="3g"

    这会将 Xmx 和 Xms 设置为 3GB。 (选修的) Solr 5.1 中的 solr.in.sh 文件中未提及此变量。这是一个错误,已经修复,将在下一个版本中发布。

  • SOLR_MODE="solrcloud" 必需

    这就是您在云模式下启动 solr 所需要的。

  • ZK_HOST=ZK1:2181,ZK2:2181,ZK3:2181 必需

    (将 zk 替换为您的 zookeeper 主机名)

  • 运行 install_solr_service.sh 命令还会创建一个 init.d 文件作为 /etc/init.d/solr

  • init.d 脚本依次调用 /opt/solr/bin/solr 脚本并包含来自 /var/solr/solr.in.sh

  • 的所有变量
  • 完成上述更改后,使用 service solr start

  • 再次启动 solr
  • 您可以使用 service solr status
  • 查看状态

创建集合分片和副本 - 所有分片、集合、副本相关命令现在都使用集合 API.

  • 在创建集合之前,应将配置文件夹上传到 ZK。 这可以使用 solr 文件夹中的 zkcli.sh 脚本来完成(不在 zookeeper 服务器上) 文件夹:/opt/solr/server/scripts/cloud-scripts

  • 上传confg文件夹的命令是

sh zkcli.sh -cmd upconfig -zkhost zk1:2181,zk2:2181,zk3:2181 -confname yourconfigname -confdir /var/solr/configs/conf

您将 运行 为您的 4 个核心中的每一个执行此命令 4 次,每次更改 conf 文件夹的路径和配置名称。

  • 这将上传 zookeeper 中名为 'yourconfigname' 的 conf 文件夹中的所有配置文件。

正在创建一个集合 我使用以下命令创建了一个新集合。

http://1.1.1.1:8983/solr/admin/collections?action=CREATE&name=yourcollectionname&numShards=2&replicationFactor=1&maxShardsPerNode=1&createNodeSet=1.1.1.1:8983_solr,2.2.2.2:8983_solr&collection.configName=yourconfigname

搜索愉快!