首页 文章

使用三个ZooKeeper服务器在SolrCloud中运行多个Solr实例

提问于
浏览
1

https://gist.github.com/kalharbi/fd29661b9926eb087c45使用这个梦幻般的Kalharbi GIST,我在我的localhost上配置了 SolrCloud ,在端口 218121822183 上有三个 ZooKeeper 服务器,其角色分别是跟随者,关注者和领导者 .

我已经将两个不同的配置,即 tr_config & rp_config 上传到ZooKeeper,并使用以下命令创建两个集合

我的配置文件夹包含一些文件,如schema.xml,solrconfig.xml等,at

-/opt/solr/server/solr/configsets/tr_config
     -/opt/solr/server/solr/configsets/rp_config

Upload config To ZooKeeper

./server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -confdir ./server/solr/configsets/tr_config/conf/ -confname tr_config

./server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -confdir ./server/solr/configsets/rp_config/conf/ -confname rp_config

Create Collections

curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=transactions&numShards=2&replicationFactor=1&collection.configName=tr_config'

curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=properties&numShards=2&replicationFactor=1&collection.configName=rp_config'

它工作正常,但我已经更改 solrconfig.xml 属性集合并再次更新配置到ZooKeeper服务器,然后它在solr初始化时显示 lockType.native 问题,所以我在 solrconfig.xml 上设置了 lockType:none . 它再次有效 . 但是当我使用命令在8983,9984和8985等不同端口上运行所有solr实例时

$ ./bin/solr start -c -p 8983 -z 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
$ ./bin/solr start -c -p 8984 -z 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
$ ./bin/solr start -c -p 8985 -z 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

表明

没有托管shard的服务器:shard1

但如果我停止8984和8985端口上的其他solr实例和 restart 8983那么我的所有文档都是可查询的 . 再次,如果我启动任何8984或8985 solr实例,8983实例再次不可查询 .

问题可能是数据索引目录对于所有三个solr实例都是相同的,但我不知道如何为每个其他solr集合配置不同的目录 . 所以专家对我的下面问题有所了解 .

  • 有什么问题?为什么我在更新ZooKeeper上的配置时无法运行三个实例 .

  • 如何更改maxShardsPerNode?

提前致谢

1 回答

  • 3

    您已经发现,它将运行多个节点,您必须为它们提供不同的 solr.home 目录 .

    您可以在启动Solr时设置此项:

    -s <dir>设置solr.solr.home系统属性; Solr将在此目录下创建核心目录 . 这允许您在同一主机上运行多个Solr实例,同时重用使用-d参数设置的相同服务器目录 . 如果设置,则指定的目录应包含solr.xml文件,除非ZooKeeper中存在solr.xml . 默认值为server / solr .

    关于 maxShardsPerNode ,我不是't think you can' . 创建集合时,该集合的设置为"set in stone" . 然而,Rebalance API正在进行中,以使这些事情变得更容易 .

    现在,您可以使用手动SPLITSHARD命令将分片拆分为两个不同的部分 . 这可以在服务器响应请求时完成,并将分片分成两半 .

相关问题