繁体   English   中英

不使用SolrCloud使用复制分发Solr

[英]Distribute Solr Using Replication without Using SolrCloud

我想使用Solr复制而不使用SolrCloud。 我有三台Solr服务器,一台是主服务器,其他是从服务器。

如何在不繁忙的Solr服务器上调度搜索查询?

有哪些工具以及如何引导?

您可以使用任何负载均衡器-Solr会使用HTTP,这使得任何现有的负载均衡技术都可用。 HAProxy,清漆,nginx等都可以按预期工作,并且可以使用不同软件包提供的所有高级功能。 它也将独立于客户端,这意味着您不仅限于SolrJ的LBHttpSolrServer类或您的特定客户端提供的产品。 某些LB解决方案还提供活动节点之间的高吞吐量缓存(清漆)或动态实时故障转移。

我们也成功使用的另一个选项是将核心复制到每个Web节点,从而使我们始终可以查询localhost进行搜索。

您已经在主从模式下配置了solr。 我认为您可以使用solrj api中的LBHttpSolrServer来查询solr。 您需要将更新请求显式发送到主节点 LBHttpSolrServer将为您提供所有指定节点之间的负载平衡。 在主从模式下,从设备负责保持自身与主设备的更新。

不要使用这个类在主/从方案中,因为文件必须被发送到正确的主索引; 没有进行节点间路由。 在SolrCloud(领导者/副本)方案中,此类可用于更新,因为更新将被转发到适当的领导者。

我希望这将有所帮助。

apache骆驼可用于一般负载均衡器。 像这样:

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(); 
   } 
} 

还有一些其他有用的材料:

基本的Apache Camel LoadBalancer故障转移示例

http://camel.apache.org/load-balancer.html

但是似乎没有直接的方法来实现Solr-camel集成,因为可以使用骆驼来平衡Java“ Beans”组件上的请求

http://camel.apache.org/loadbalancing-mina-example.html

还有另一个有用的例子:

https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/CustomLoadBalanceTest.java

您可以使用骆驼作为客户端和服务器之间的代理

http://camel.apache.org/how-to-use-camel-as-a-http-proxy-between-a-client-and-server.html

有一些介绍以Apache骆驼开头,其方法和体系结构: http : //www.slideshare.net/ieugen222/eip-cu-apache-camel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM