我想在不使用SolrCloud的情况下使用Solr复制。 我有三个Solr服务器,一个是主服务器,另一个是从服务器。
如何在不忙的Solr服务器上调度搜索查询?
有哪些工具可以做什么以及如何领导?
答案 0 :(得分:3)
您可以使用任何负载均衡器 - Solr会谈HTTP,这使得任何现有的负载均衡技术都可用。 HAProxy,varnish,nginx等都可以按预期工作,并且您将能够使用不同软件包提供的所有高级功能。它也独立于客户端,这意味着您不仅限于SolrJ的LBHttpSolrServer类或您的特定客户端提供的类。某些LB解决方案还提供高吞吐量缓存(清漆)或实时节点之间的动态实时失败转移。
我们成功使用的另一个选项是将核心复制到每个Web节点,允许我们始终查询localhost进行搜索。
答案 1 :(得分:1)
您已在主从模式下配置solr。我想你可以使用solrj api中的LBHttpSolrServer来查询solr。您需要明确地将更新请求发送到主节点。 LBHttpSolrServer将为您提供所有指定节点之间的负载平衡。在主从模式下,slave负责保持自己与主服务器的更新。
NOT 使用此类在主/从方案中进行索引,因为必须将文档发送到正确的主服务器;没有完成节点间路由。在SolrCloud(领导/副本)方案中,此类可用于更新,因为更新将转发给相应的领导者。
我希望这会有所帮助。
答案 2 :(得分:1)
apache camel可用于一般负载均衡器。像这样:
public class LoadBalancer {
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("jetty://http://localhost:8080")
.loadBalance().roundRobin().to("http://172.28.39.138:8080","http://172.168.20.118:8080");
}
});
context.start();
Thread.sleep(100000);
context.stop();
}
}
还有一些其他材料可能有用:
Basic Apache Camel LoadBalancer Failover Example
http://camel.apache.org/load-balancer.html
但似乎没有直接的方法来进行solr-camel集成,因为camel可以用来平衡对java" Beans"部件
http://camel.apache.org/loadbalancing-mina-example.html
还有另一个有用的例子:
您可以使用camel作为客户端和服务器之间的代理
http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html
有一些介绍从apache camel开始,它的方法和架构: http://www.slideshare.net/ieugen222/eip-cu-apache-camel