运行 具有三个 ZooKeeper 服务器的 SolrCloud 中的多个 Solr 实例
Run Multiple Solr instances in SolrCloud with three ZooKeeper server
在 https://gist.github.com/kalharbi/fd29661b9926eb087c45 使用 Kalharbi 的这个奇妙的 GIST,我在我的本地主机上配置了 SolrCloud 三个 ZooKeeper 服务器port 2181, 2182 & 2183 他们的角色分别是follower, follower, & Leader.
我已经上传了两个不同的配置,即 tr_config 和 rp_config 到 ZooKeeper 并使用以下命令创建两个 collections
我的配置文件夹包含一些文件,如 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
创建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 属性 collection 并再次将配置更新到 ZooKeeper 服务器,然后它显示 lockType.native 关于 solr 初始化的问题,所以我在 solrconfig.xml 上设置了 lockType:none 。它再次起作用。但是当我 运行 使用命令
在不同端口(如 8983、8984 和 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
显示
no servers hosting shard: shard1
但是如果我停止 8984 和 8985 端口上的其他 solr 实例并 restart 8983 那么我的所有文档都是可查询的。如果我再次启动任何 8984 或 8985 solr 实例,8983 实例将再次不可查询。
The problem may be the data indexing directory are same for all three
solr instances, but I don't know how to configure it differently for
every other solr collections. So experts give some light on my below
problems.
有什么问题吗?为什么我不能 运行 三个实例
更新 ZooKeeper 上的配置。?
如何更改 maxShardsPerNode?
提前致谢
您可能已经解决了这个问题 - 对所有节点使用相同的数据目录是行不通的(或者如您所见,它会产生奇怪的错误)。如果您要 运行 多个节点,则必须为每个节点提供不同的 solr.home
目录。
你可以在启动Solr时设置:
-s <dir>
Sets the solr.solr.home system property; Solr will create core directories under this directory. This allows you to run multiple Solr instances on the same host while reusing the same server directory set using the -d parameter. If set, the specified directory should contain a solr.xml file, unless solr.xml exists in ZooKeeper. The default value is server/solr.
关于 maxShardsPerNode
,我不认为你不能。创建集合时,该集合的设置将为 "set in stone"。然而,重新平衡 API 的工作正在进行中,以使这些事情变得更容易。
现在您可以使用手动 SPLITSHARD 命令将碎片拆分为两个不同的部分。这可以在服务器响应请求时完成,并将分片分成两半。
在 https://gist.github.com/kalharbi/fd29661b9926eb087c45 使用 Kalharbi 的这个奇妙的 GIST,我在我的本地主机上配置了 SolrCloud 三个 ZooKeeper 服务器port 2181, 2182 & 2183 他们的角色分别是follower, follower, & Leader.
我已经上传了两个不同的配置,即 tr_config 和 rp_config 到 ZooKeeper 并使用以下命令创建两个 collections
我的配置文件夹包含一些文件,如 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
创建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 属性 collection 并再次将配置更新到 ZooKeeper 服务器,然后它显示 lockType.native 关于 solr 初始化的问题,所以我在 solrconfig.xml 上设置了 lockType:none 。它再次起作用。但是当我 运行 使用命令
在不同端口(如 8983、8984 和 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
显示
no servers hosting shard: shard1
但是如果我停止 8984 和 8985 端口上的其他 solr 实例并 restart 8983 那么我的所有文档都是可查询的。如果我再次启动任何 8984 或 8985 solr 实例,8983 实例将再次不可查询。
The problem may be the data indexing directory are same for all three solr instances, but I don't know how to configure it differently for every other solr collections. So experts give some light on my below problems.
有什么问题吗?为什么我不能 运行 三个实例 更新 ZooKeeper 上的配置。?
如何更改 maxShardsPerNode?
提前致谢
您可能已经解决了这个问题 - 对所有节点使用相同的数据目录是行不通的(或者如您所见,它会产生奇怪的错误)。如果您要 运行 多个节点,则必须为每个节点提供不同的 solr.home
目录。
你可以在启动Solr时设置:
-s <dir>
Sets the solr.solr.home system property; Solr will create core directories under this directory. This allows you to run multiple Solr instances on the same host while reusing the same server directory set using the -d parameter. If set, the specified directory should contain a solr.xml file, unless solr.xml exists in ZooKeeper. The default value is server/solr.
关于 maxShardsPerNode
,我不认为你不能。创建集合时,该集合的设置将为 "set in stone"。然而,重新平衡 API 的工作正在进行中,以使这些事情变得更容易。
现在您可以使用手动 SPLITSHARD 命令将碎片拆分为两个不同的部分。这可以在服务器响应请求时完成,并将分片分成两半。