我正在开发一个使用Solr作为搜索引擎的.NET应用程序。我已经用两个服务器配置了一个SolrCloud安装(一个用于复制),并且我没有将索引拆分为碎片( shards的数量= 1)。我读过SolrCloud (通过动物园管理员)可以做一些负载平衡,但我不明白如何。如果调用部署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
发布于 2014-11-05 10:10:03
我已经测试过这个解决方案了。在字段中添加各种碎片地址"shards“(由字符”分部“分隔)迫使Solr调用执行简单循环平衡的内部负载均衡器(LBHttpSolrServer)。
发布于 2014-10-29 04:05:18
因为您只有一个碎片,所以接收请求的服务器将响应结果,当它在本地拥有数据时,它不会对另一个副本执行另一个请求。Java CloudSolrServer客户端连接到ZooKeeper,并知道哪些服务器处于上或下,并将在所有活动服务器上适当地执行负载平衡。我不相信有任何端口.NET端口可用于这个特定的客户端。
https://stackoverflow.com/questions/26533833
复制相似问题