引導:適用於各種注冊服務,zookeeper和被注冊的服務器不在同一ip上,產生的注冊了127.0.0.1本地ip地址
在使用solr集群操作的時候,報了如下的錯誤
org.apache.solr.client.solrj.SolrServerException:
No live SolrServers available to handle this request:[http://127.0.0.1:9090/solr/ego, http://127.0.0.1:6060/solr/ego, http://127.0.0.1:8080/solr/ego, http://127.0.0.1:7070/solr/ego] Caused by: org.apache.solr.client.solrj.SolrServerException: Server refused connection at: http://127.0.0.1:6060/solr/ego
這個究竟就是什么呢?
跟我們要配置的訪問solr集群的地址很像,但是solr的ip例如我的是169.254.18.14而且和zookeeper不在同一台服務器上
這也就是說,它們兩個的ip地址不一致,而且它訪問的還是127.0.0.1是肯定訪問不到solr的!
我們可以在注冊中心zookeeper里面進行查看 live_nodes 這個就是我們solr集群活着的節點注冊的地址,

那么是從哪里注冊的地址?肯定是在我們的solr服務器上注冊的,那么應該傳遞過來的是solr的ip地址啊,
由此我們大家都可以想到些什么了,那就是我們的hosts文件里沒有指定我們本機的外網地址。
具體解決操作如下:
1.首先查看你的主機名
vi /etc/sysconfig/network

如果里面有HOSTNAME=xxx 那么你就記住這個xxx主機名即可,如果沒有的話,自行按照這個格式 添加一個 :HOSTNAME=xxx
2.修改HOSTS文件
vi /etc/hosts
大多數沒修改過的人看到的應該是這個樣子

我們在下面新添加一行,
本機的ip地址 主機名 例如我的: 169.254.18.14 arebirth
修改后的樣子

讓后我們重啟所有solr集群,也就是重啟tomcate,
然后重新查看zookeeper里面的live_nodes

問題解決!
參考:
https://blog.csdn.net/wwwjjj_3/article/details/79756066
