以下是我的情景:
我在我的应用程序中使用Solr,它将使用输入查询命中solr服务器并获得结果。我有2个solr节点,所以我使用的是solr负载均衡器 LBHttpSolrServer 。像这样的东西,
LBHttpSolrServer server1 = new LBHttpSolrServer("http://56.145.254.54:9080/solr/ehacollection","http://56.145.254.54:7080/solr/ehacollection");
当从简单的java“public static void main”方法(即作为独立程序)执行此代码时,负载平衡很好。这是所有其他请求在端点A和B之间交替。
但是,当相同的代码包含在Mapper代码中并部署在 AWS EMR 设置中时,不会发生负载均衡,我们通过观察服务器日志确认,来自映射器代码的所有请求始终是到达连接字符串中的第一个服务器(即它总是达到“http://56.145.254.54:9080/solr/ehacollection”,如上面的字符串所示。)
更多细节,
Solr版本:4.10.3
使用的Load Balancer类:org.apache.solr.client.solrj.impl.LBHttpSolrServer
EMR AMI版本:2.4.9
Hadoop发布:亚马逊1.0.3
你们中的任何人请帮我解决这个问题。非常感谢..