我有一个独立的 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
我的问题是:
答案 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文件夹和配置名称的路径。
创建集合 我使用以下命令创建一个新集合。
快乐搜索!
答案 1 :(得分:1)
SolrCloud不使用存储在核心conf
目录中的配置文件。要使您的内核在SolrCloud结构中可见,您需要将配置文件上载到ZooKeeper并让它管理文件。始终出现Solr实例时,它会获取存储在ZooKeeper中的配置文件。这样,您的核心不需要conf
目录才能工作。要将核心配置文件上传到ZooKeeper,请按照下面的链接查看Upload a configuration directory
https://cwiki.apache.org/confluence/display/solr/Command+Line+Utilities