使用三个ZooKeeper服务器

时间:2016-10-26 16:51:15

标签: solr apache-zookeeper solrcloud

https://gist.github.com/kalharbi/fd29661b9926eb087c45使用这个梦幻般的Kalharbi GIST,我在本地主机上配置了 SolrCloud ,在 2181 ZooKeeper 服务器>, 2182 & 2183 他们的角色是追随者,追随者,&领导者分别。

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

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

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

将配置上传到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

创建收藏

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 。它再次有效。但是当我在不同的端口上运行所有solr实例时,如8983,8984& 8985使用命令

$ ./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

显示

  

没有托管分片的服务器:shard1

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

  

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

  1. 有什么问题?为什么我不能运行三个实例 更新ZooKeeper上的配置。?

  2. 如何更改maxShardsPerNode?

  3. 先谢谢

1 个答案:

答案 0 :(得分:3)

您可能已经解决了它 - 使用所有节点的相同数据目录将无法正常工作(或者您已经发现,它会给出奇怪的错误)。如果您要运行多个节点,则必须为每个节点提供不同的solr.home目录。

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

  

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

关于maxShardsPerNode,我认为你不能这样做。当您创建集合时,该设置将被设置为#34;为集合。然而,Rebalance API正在进行中,以使这些事情变得更容易。

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