SolrCloud正在检测不存在的节点

时间:2012-11-21 03:27:42

标签: solr apache-zookeeper solrcloud

我与SolrCloud有一个有趣的情况。基本上,我不知道为什么,但Solr实例(通常不在云中)显示在SolrCloud页面上,也可以在Zookepeer中的live_nodes路径中看到。

以下是有关情况的详细信息:

我有一个Solr实例,作为虚拟机上的独立应用程序运行,位于删除计算机上。从现在开始我们将其称为virtual1

这是运行它的脚本:

java
-server
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseCompressedStrings
-Dcom.sun.management.jmxremote
-d64
-Xmx4096m
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=remotehost -jar start.jar 

此实例在端口8983上运行,因此当您转到virtual1:8983时,您会看到solr的经典管理页面。其余的配置与示例solr完全相同,后者带有solr distrubutions。

然后,在我的本地计算机上(从现在起将被称为local),我在端口21812182上运行我的zookeeper服务器

然后将我的solr实例添加到云中,我只是在本地计算机上运行一个实例,在virtual1上运行另外两个实例,并在下面创建用于启动它们的脚本:

我本地的Solr实例:

java -Dbootstrap_conf=true -DzkHost=zkhost:2181 -Djetty.port=8984 -jar start.jar

远程Solr实例:

java -DzkHost=zkhost:2181 -Djetty.port=8985 -jar start.jar
java -DzkHost=zkhost:2182 -Djetty.port=8986 -jar start.jar

在此之前,Solr或Zookeeper日志中没有异常或错误。

当我检查virtual1:8985 and virtual1:8986时,它们都在运行,以及我本地的实例。

但是当我检查云时(来自Solr管理页面和zookeeper CLI)。我只能在云中看到local:8983virtual1:8983,而virtual1:8985 and virtual1:8986根本没有添加...奇怪的是virtual1:8983对Zookeeper服务器一无所知你可以从上面的起始脚本中看到。

除了上面的事实,我还尝试了另一件事。在使用virtual2的同一台硬盘上运行的另一台虚拟机(virtual1)上 ,我用:

创建了Solr实例
java -DzkHost=zkhost:2181 -Djetty.port=8985 -jar start.jar
java -DzkHost=zkhost:2182 -Djetty.port=8986 -jar start.jar

所以在这种情况下,我将有virtual2:8985 and virtual2:8986的实例,它应该在云中。但它没有发生......我只能看到virtual2:8983,它不存在于真实中。它只显示独立的Solr端口,该端口在virtual1上运行。

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:-1)

您应该尝试删除zookeeper数据并指定-Dbootstrap_confdir = / path / to / conf / dir,它将配置和节点状态推送到zookeeper。此外,如果您正在运行zookeeper集合,请检查其状态(领导者或关注者,或者如果没有与节点的连接)

echo stat | nc zk_host zk_port

您可以使用zkCli.sh通过

查看群集状态
get /clusterstate.json

并显示zookeeper配置,他们应该看起来像这样:

clientPort=2181 (2182 for second instance)
server.1=zk_host:2888:3888
server.2=zk_host:2888:3888

并检查Solr和Zookeeper日志以查找成功连接。