连接时,Zookeeper java.net.NoRouteToHostException

时间:2014-02-03 21:08:03

标签: java linux apache apache-zookeeper

此处为数据转储提前道歉。我有两台安装了Zookeeper的服务器。我想把它们作为一个整体来运行。以下是我的zoo.cfg中的内容。

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
server.1=solr1:2888:3888
server.2=solr2:2888:3888
clientPort=2181

两台服务器都有一个myid文件。它们的名字在/ etc / hosts文件中,所以它们绝对可以看到对方。当我使用zkServer.sh启动其中任何一个时,它表示zookeeper已启动。但是,当我运行“zkServer.sh status”时,我看到了这样的消息:

Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

但是zookeeper java进程似乎正在运行,并且使用netstat显示tcp端口3888和2181正在侦听。当我尝试使用“sh zkCli.sh -server localhost:2181”连接到服务器时,我看到一堆环境信息,然后是一大堆这些日志条目:

2014-02-03 15:39:00,623 [myid:] - INFO [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@966] - Opening socket connection to server localhost.localdomain/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2014-02-03 15:39:00,646 [myid:] - INFO [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@849] - Socket            connection established to localhost.localdomain/127.0.0.1:2181, initiating session
JLine support is enable
2014-02-03 15:39:00,662 [myid:] - INFO  [main-SendThread(localhost.localdomain:2181):ClientCnxn$SendThread@1085] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect

如果我尝试连接到其他服务器(sh zkCli.sh -server solr1:2181),我会看到一堆这样的:

2014-02-03 15:40:42,390 [myid:] - WARN  [main-SendThread(solr1:2181):ClientCnxn$SendThread@1089] - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.NoRouteToHostException: No route to host

Zookeeper似乎正在运行,尽管zkServer.sh状态另有说法。但有没有人对我的连接问题有任何见解?操作系统是RHEL 6.4,64位。

3 个答案:

答案 0 :(得分:5)

啊哈,我现在解决了同样的问题,操作系统是Centos7。我检查所有配置文件但无法帮助。最后,我修改了iptable来添加这样的端口:2181,2888,3888,然后重新启动zookeeper服务器,它的工作原理。其中一个cmd就像:   firewall-cmd --zone = public --add-port = 2181 / udp --add-port = 2181 / tcp --permanent 然后重新上架:   firewall-cmd --reload 当然,你可以关闭iptables并禁用iptables加载启动操作系统来实现这一点。   另外,你应该检查数据路径中是否有“myid”文件:dataDir = / opt / zookeeper / data,其所有者应该是“username:groupUsername”;   愿它也能帮到你。

答案 1 :(得分:0)

我可能不是zookeeper的专家,但是我已经在RedHat的4个计算机集群上以集成模式安装了zookeeper。在尝试了我所做的所有事情之后,我遇到了同样的问题,我厌倦了stackoverflow上的所有可用功能 *在经过数次思考后,我关闭了所有机器上的iptables和防火墙,但仍然出现错误 *为所有机器启用密码ssh更少,这解决了我的问题,现在我的Zookeper都在所有4台机器上启动并运行

答案 2 :(得分:-4)

禁用iptables

后问题解决了