与外部动物园管理员的Solr云

时间:2017-11-10 05:53:22

标签: solr lucene apache-zookeeper

我正在关注本教程:https://gist.github.com/kalharbi/fd29661b9926eb087c45

使用2个节点配置solr云。

1.在两台机器上配置动物园管理员:192.168.1.56:2181(localadmin4),192.168.1.55:21820(localadmin8) 当检查状态时,两者都在工作:

localadmin8@localadmin8:/opt/solr$ ../zookeeper/bin/zkServer.sh status /data/zookeeper/z2/zoo.cfg ZooKeeper JMX enabled by default Using config: /data/zookeeper/z2/zoo.cfg Mode: leader

localadmin4@localadmin4:/opt/solr$ ../zookeeper/bin/zkServer.sh status /data/zookeeper/z1/zoo.cfg 
ZooKeeper JMX enabled by default
Using config: /data/zookeeper/z1/zoo.cfg
Mode: follower

2.started solr

localadmin4@localadmin4:/opt/solr$ ./bin/solr start -c -p 8983 -z 192.168.1.56:2181,192.168.1.55:2182

localadmin8@localadmin8:/opt/solr$ ./bin/solr start -c -p 8984 -z 192.168.1.56:2181,192.168.1.55:2182

3.在浏览器中检查solr admin:http://192.168.1.56:8983http://192.168.1.55:8984。 solr都工作正常。

4.配置到zookeeper的配置: localadmin4 @ localadmin4:/ opt / solr $ ./server/scripts/cloud-scripts/zkcli.sh -cmd upconfig -zkhost 192.168.1.56:2181 -confdir ./server/solr/configsets/data_driven_schema_configs/conf/ -confname l-配置

5.创建集合时: http://192.168.1.56:8983/solr/admin/collections?action=CREATE&name=onix&numShards=2&replicationFactor=1&collection.configName=l-config

它给了我以下回复:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">33011</int>
</lst>
<lst name="failure">
<str name="127.0.1.1:8984_solr">org.apache.solr.client.solrj.SolrServerException:Server refused connection at: http://127.0.1.1:8984/solr</str>
</lst>
<lst name="success">
<lst name="127.0.1.1:8983_solr">
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1957</int>
</lst>
<str name="core">onix_shard2_replica1</str>
</lst>
</lst>
</response>

而不是命中192.168.1.55:8984_solr,而是命中127.0.1.1:8984_solr。

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

这可能是因为Solr在启动时检测到自己错误的IP,因此在Solr集群中注册节点时使用了错误的IP。

您可以tell Solr which IP to use by giving the embedded Jetty container the IP to use(或仅用于节点内通信,使用SOLR_HOST就足够了。)

  

有人问我如何确保Solr完全暴露在服务器的内部IP地址上,所以我认为这些信息更有用。   在Linux上,编辑solr.in.sh文件,找到名为SOLR_HOST的属性(默认情况下它被注释掉)并将其值设置为您希望Solr侦听请求的IP地址或主机名。

     

SOLR_HOST="192.168.1.55"

     

除了要编辑的文件是solr.in.cmd之外,Windows上的过程类似。

     

稍后我指出,设置SOLR_HOST是不够的,因为该属性设置的主机/ IP仅由SolrCloud用于进行分片间请求。我们还需要在solr.in.sh或solr.in.cmd中设置Jetty使用的属性:

     

SOLR_OPTS="$SOLR_OPTS -Djetty.host=192.168.1.55"

答案 1 :(得分:-1)

您是否添加了这样的IP 127.0.1.1可能应该127.0.0.1交叉检查。

还要确保使用正确的服务器节点和服务器ID映射文件正确修改了zoo.cfg文件。

例如:

 server.1=127.0.0.1:2222:2223
 server.2=127.0.0.1:3333:3334

External Zookeeper with Solr Cloud 上的我的博客可能对您有帮助。