我有一个SolrCloud集群(6.6)设置与5个节点的外部Zookeeper Ensemble(3.4.8) . 最近,运行1个Zookeeper且id = 1的一台机器(ip1:port1)关闭了 . 这就是我为取代zookeeper而做的事情:

  • 在具有相同id(= 1)的另一台机器中启动zookeeper .

  • 更改4 live zookeeper中的zoo.cfg以匹配新的zookeeper服务器并重新启动 .

  • 更新solr.in.sh中的ZK_HOST变量以匹配新的zookeeper服务器 .

  • 重启solr .

之后,我的solr集群似乎运行良好,但在solr.log中,看起来solr客户端和zookeeper服务器仍然尝试连接到旧的zookeeper:

Solr日志

2017-12-01 15:04:38.782 WARN  (Timer-0-SendThread(ip1:port1)) [   ] o.a.z.ClientCnxn Client session timed out, have not heard from server in 30029ms for sessionid 0x0

2017-12-01 15:04:40.807 WARN  (Timer-0-SendThread(ip1:port1)) [   ] o.a.z.ClientCnxn Client session timed out, have not heard from server in 31030ms for sessionid 0x0

Zookeeper日志:

2017-12-01 13:53:57,972 [myid:] - INFO  [main-SendThread(ip1:port1):ClientCnxn$SendThread@1032] - Opening socket connection to server ip1:port1. Will not attempt to authenticate using SASL (unknown error)
2017-12-01 13:54:03,972 [myid:] - WARN  [main-SendThread(ip1:port1):ClientCnxn$SendThread@1162] - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.NoRouteToHostException: No route to host
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:744)
    at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)
2017-12-01 13:54:05,074 [myid:] - INFO  [main-SendThread(ip1:port1):ClientCnxn$SendThread@1032] - Opening socket connection to server ip1:port1. Will not attempt to authenticate using SASL (unknown error)
2017-12-01 13:54:06,974 [myid:] - WARN  [main-SendThread(ip1:port1):ClientCnxn$SendThread@1162] - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect

我已经在添加/删除zookeeper中进行了一些搜索,但没有找到它的文档 . 我的zookeeper版本(3.4.7)不支持动态重新配置(在zookeeper 3.5中) . 有没有办法可以从ensemble手动删除/添加zookeeper服务器?

感谢您的关注!