SolrCloud负载均衡

8
我正在开发一个使用Solr作为搜索引擎的.NET应用程序。我已经配置了一个包含两个服务器(一个用于副本)的SolrCloud安装,并且没有将索引分成分片(分片数=1)。我读到SolrCloud(通过Zookeeper)可以进行一些负载均衡,但我不太理解如何实现。如果我调用部署了Solr实例的特定地址,则查询仅出现在该特定服务器的日志中。
在SolrCloud文档中,我找到了以下内容:

明确指定要查询的分片地址,提供备选项(用 | 分隔)以进行负载平衡和故障转移:

http://www.ipaddress.com:8983/solr/collection1/select?shards=www.ipaddress.com:8983/solr|www.ipaddress.com:8900/solr,www.ipaddress.com:7574/solr|www.ipaddress.com:7500/solr


我想知道是否可以使用这种标记来强制负载均衡,即使我只有一个完整的索引(仅有一个分片),在这种情况下负载均衡器如何工作。
更新:我已经测试了这个解决方案,它有效。将各个分片地址添加到“shards”字段中,用字符“|”分隔,可以强制Solr调用内部负载平衡器(LBHttpSolrServer),执行简单的轮询负载平衡。
感谢您的帮助。
敬礼, Jacopo
2个回答

5
我测试过这个解决方案,它是有效的。在“shards”字段中添加不同的分片地址,以“|”字符分隔,可以强制Solr调用内部负载均衡器(LBHttpSolrServer),执行简单的轮询负载平衡。

1

由于您只有一个分片,接收请求的服务器将使用本地数据响应结果,而不会对其他副本执行另一个请求。Java CloudSolrServer客户端连接到ZooKeeper,并知道哪些服务器正在运行或关闭,并将适当地在所有活动服务器之间执行负载平衡。我认为没有.NET端口可用于此特定客户端。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接