当前位置: 首页 > 知识库问答 >
问题:

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

微生俊捷
2023-03-14

在https://gist.github.com/kalharbi/fd29661b9926eb087c45,我在本地主机上配置了SolrCloud,在端口2181、2182上配置了三个ZooKeeper服务器

我上传了两种不同的配置,即tr_config

我的配置文件夹包含一些类似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服务器,然后它显示lockType.nativesolr初始化问题,所以然后我设置lockType:无solrconfig.xml.,它再次工作

$ ./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实例并重新启动8983,那么我所有的文档都是可查询的。再次如果我启动任何8984或8985 solr实例,8983实例再次不可查询。

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

>

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

    如何更改maxShardsPerNode?

    提前感谢

  • 共有1个答案

    许庆
    2023-03-14

    您可能已经解决了这个问题-对所有节点使用相同的数据目录将不起作用(或者正如您所发现的那样,这将产生奇怪的错误)。如果要运行多个节点,则必须为每个节点提供不同的solr。主页目录。

    启动Solr时可以设置:

    -s

    关于maxShardsPerNode,我认为您不能。创建集合时,该设置将对集合“一成不变”。然而,重新平衡API的工作正在进行中,以使这些事情变得更容易。

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

     类似资料:
    • 自 1.5 后就过时了 在 Hangfire 1.5 之后,您不需要额外的配置来支持多个服务实例处理同一个后台任务,可以跳过本文了。现在使用 GUID 生成服务器标识符,因此所有实例名称都是唯一的。 可以同时在一个程序、机器或多台机器上运行多个服务器实例。每个服务实例使用分布式锁来执行协调逻辑。 在上述情况中,每个Hangfire服务器都有一个唯一的由两部分组成的供默认值标识符。最后一部分是一个程

    • 我已经为web服务创建了10个微服务Docker,并将创建的映像推送到ECS,并使用elastic beanstalk进行部署。将所有Docker放置在单个任务定义中,并创建了一个用于应用程序级自动缩放的服务。它通过在自动缩放时复制它来创建另一个任务。 我只想为dockers应用自动缩放,而不是为任务应用自动缩放。如果一个docker受到CPU或内存负载的影响,自动缩放应该只创建特定docker的

    • 我们有一个spring boot应用程序和计划任务。 我们希望 在多个服务器上部署我们的应用程序 ,因此应用程序的多个实例。 如何配置spring在同时运行的多个实例上运行调度任务? 例如:一个应用程序在上午12点部署在第一个服务器实例中,任务计划在12点运行。同一个应用程序部署在第二个服务器实例中,时间为凌晨12点03分,由于部署任务存在差异,因此也在凌晨12点33分开始执行相同的cron表达式

    • 问题内容: 我正在尝试在Google App Engine中使用多个模块。 我尝试使用此源代码: https://github.com/GoogleCloudPlatform/appengine-modules-helloworld- python 但是我似乎找不到从所有.yaml加载的pycharm运行的方法,因此似乎只有app.yaml加载了。 另外,当尝试将代码上传到Appengine(使用

    • 问题内容: 我用来将后台作业处理到我们的Rails项目之一中。我们要使用位于不同位置的其他Redis服务器来与其他后台处理作业分开。 根据Sidekiq配置wiki,我们可以像 config / initializers / sidekiq.rb 但是,如何初始化与多个Redis服务器的连接? 问题答案: Sidekiq 2不支持多个Redis服务器,请升级到仅在今天发布的sidekiq 3,并添

    • 我正在使用mosquitto(http://mosquitto.org/)作为MQTT代理,并寻求关于负载平衡订阅服务器的建议(针对相同的主题)。这是如何实现的?我所读到的关于该协议的所有内容都表明,相同主题的所有订阅者都将获得一条发布消息。 这似乎效率很低,因此我正在寻找一种方法,将发布的消息以循环方式提供给连接的订阅服务器之一,以确保负载平衡状态。