Solrcloud多核配置

时间:2015-06-06 09:11:58

标签: solr lucene multicore sharding solrcloud

我有一个独立的 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目录如下所示: 4 cores Solr folder

我的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>

每个核心都是这样的: a core config

core.properties只有核心名称:

name=users

我的问题是:

  • 如何启动Solrcloud v5.1以便拾取4个内核?

2 个答案:

答案 0 :(得分:3)

在SolrCloud中,您的核心中的每一个都将成为集合

每个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设置的步骤。

  • 设置zookeeper集合。我假设你正在尝试使用 在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

  • 上面的命令将创建一个名为&#34; solr&#34;的新用户。如果它不存在。

  • 这些是它将采用的一些默认选项。您可以在/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 必填

    (用你的zookeeper主机名替换zk)

  • 运行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
  • 查看状态

创建收藏品碎片和副本   - 现在使用Collections 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文件夹和配置名称的路径。

  • 这会将conf文件夹中的所有配置文件上传到名称&#39; yourconfigname&#39;在zookeeper中。

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

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

快乐搜索!

答案 1 :(得分:1)

SolrCloud不使用存储在核心conf目录中的配置文件。要使您的内核在SolrCloud结构中可见,您需要将配置文件上载到ZooKeeper并让它管理文件。始终出现Solr实例时,它会获取存储在ZooKeeper中的配置文件。这样,您的核心不需要conf目录才能工作。要将核心配置文件上传到ZooKeeper,请按照下面的链接查看Upload a configuration directory

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