我与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
),我在端口2181
和2182
上运行我的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:8983
和virtual1:8983
,而virtual1:8985 and virtual1:8986
根本没有添加...奇怪的是virtual1:8983
对Zookeeper服务器一无所知你可以从上面的起始脚本中看到。
除了上面的事实,我还尝试了另一件事。在使用virtual2
的同一台硬盘上运行的另一台虚拟机(virtual1
)上
,我用:
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
上运行。
任何人都可以解释为什么会这样吗?
答案 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日志以查找成功连接。