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 v5.1 以便选择 4 个内核?
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 文件夹中的所有配置文件。
正在创建一个集合
我使用以下命令创建了一个新集合。
搜索愉快!
我有一个独立的 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 v5.1 以便选择 4 个内核?
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 文件夹中的所有配置文件。
正在创建一个集合 我使用以下命令创建了一个新集合。
搜索愉快!