Apache zookeeper Zookeeper连接错误

Apache zookeeper Zookeeper连接错误,apache-zookeeper,Apache Zookeeper,我们在开发机器上有一个独立的zookeeper设置。除了这台testdev机器之外,它对其他所有dev机器都可以正常工作 在尝试通过testdev连接zookeeper时,我们反复遇到此错误: 2012-11-09 14:06:53,909 - INFO [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@947] - Socket connection established to zk01.dev.bunc

我们在开发机器上有一个独立的zookeeper设置。除了这台testdev机器之外,它对其他所有dev机器都可以正常工作

在尝试通过testdev连接zookeeper时,我们反复遇到此错误:

2012-11-09 14:06:53,909 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@947] - Socket connection established to zk01.dev.bunchball.net/192.168.8.58:2181, initiating session
2012-11-09 14:06:53,911 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@1183] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
2012-11-09 14:06:55,366 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@1058] - Opening socket connection to server zk01.dev.bunchball.net/192.168.8.58:2181
2012-11-09 14:06:55,368 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@947] - Socket connection established to zk01.dev.bunchball.net/192.168.8.58:2181, initiating session
2012-11-09 14:06:55,368 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@1183] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
2012-11-09 14:06:57,271 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@1058] - Opening socket connection to server zk01.dev.bunchball.net/192.168.8.58:2181
2012-11-09 14:06:57,274 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@947] - Socket connection established to zk01.dev.bunchball.net/192.168.8.58:2181, initiating session
2012-11-09 14:06:57,275 - INFO  [main-SendThread(zk01.dev.bunchball.net:2181):ClientCnxn$SendThread@1183] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect

我们尝试重新启动测试开发机器,也重新启动zookeeper主机,但没有任何效果。我们完全搞不懂为什么除了这台机器之外,它与其他机器配合得很好。这可能是什么原因造成的?

我也有这个问题,结果是我告诉zookeeper连接到错误的端口。您是否已验证zookeeper实际上正在开发机器上的端口2181上运行?

我的情况与您的情况相同,我刚刚修复了此问题

这是您配置偶数个动物园管理员的原因,直接导致 要解决此问题,请尝试将zookeeper节点数更改为奇数

例如,我的zookeeper集群的原始状态由4个节点组成,然后只需删除其中一个节点,这将导致节点数为3 现在可以启动zookeeper集群了

下面是成功连接到zookeeper服务器的输出

2013-04-22 22:07:05,654 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@1321ed6
Welcome to ZooKeeper!
2013-04-22 22:07:05,704 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@966] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2013-04-22 22:07:05,727 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@849] - Socket connection established to localhost/127.0.0.1:2181, initiating session
[zk: localhost:2181(CONNECTING) 0] 2013-04-22 22:07:05,846 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1207] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x13e3211c06e0000, negotiated timeout = 30000

我也遇到了这个问题,我发现我只需要重新启动zookeeper,然后重新启动tomcat,这样我的Web应用程序就可以很好地连接起来,然后我就可以从zookeeper和kafka两个节点开始。 我得到这个错误是因为我用./zkServer.sh而不是kafka包装器启动了zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties

确保所有必需的服务都在运行

步骤1:检查hbase主机是否正在运行

sudo /etc/init.d/hbase-master status
sudo /etc/init.d/hbase-regionserver status
sudo /etc/init.d/zookeeper-server status
如果没有,则启动它
sudo/etc/init.d/hbase-master start

步骤2:检查hbase regionserver是否正在运行

sudo /etc/init.d/hbase-master status
sudo /etc/init.d/hbase-regionserver status
sudo /etc/init.d/zookeeper-server status
如果没有,则启动它
sudo/etc/init.d/hbase-regionserver start

步骤3:检查zookeeper服务器是否正在运行

sudo /etc/init.d/hbase-master status
sudo /etc/init.d/hbase-regionserver status
sudo /etc/init.d/zookeeper-server status
如果没有,则启动它
sudo/etc/init.d/zookeeper-server start


或只需连续运行这3个命令。

sudo /etc/init.d/hbase-master restart
sudo /etc/init.d/hbase-regionserver restart
sudo /etc/init.d/zookeeper-server restart
之后别忘了检查状态

sudo /etc/init.d/hbase-master status
sudo /etc/init.d/hbase-regionserver status
sudo /etc/init.d/zookeeper-server status
您可能会发现zookeeper仍然没有运行: 然后你可以运行动物园管理员

sudo /usr/lib/zookeeper/bin/zkServer.sh stop
sudo /usr/lib/zookeeper/bin/zkServer.sh start
然后再次检查状态并确保其正在运行

sudo /etc/init.d/zookeeper-server status

这应该行得通。

我也遇到了同样的问题,发现这是因为zookeeper群集节点需要打开端口才能相互通信

server.1=xx.xx.xx.xx:2888:3888

server.2=xx.xx.xx.xx:2888:3888

server.3=xx.xx.xx.xx:2888:3888

一旦我允许这些端口通过aws安全组并重新启动。对我来说一切都很好

在我的情况下,我将zoo.cfg配置为:

server.1=host-1:2888:3888
server.2=host-2:2888:3888
server.3=host-3:2888:3888
server.1=10.194.236.32:2888:3888
server.2=10.194.236.33:2888:3888
server.3=10.208.177.15:2888:3888
server.4=10.210.154.23:2888:3888
server.5=10.210.154.22:2888:3888
1      //at host  10.194.236.32
2      //at host  10.194.236.33
3      //at host  10.208.177.15
4      //at host  10.210.154.23
5      //at host  10.210.154.22
但是,在host-1中,我在/etc/hosts中将host-1配置为127.0.0.1:

127.0.0.1   localhost host-1
这可能导致其他主机无法与其通信。将主机1解析为其真实ip解决了此问题


希望这能有所帮助。

我在我的机器上启动了独立实例,遇到了同样的问题。最后,我将ip“127.0.0.1”更改为“localhost”,问题就消失了。

我刚刚解决了这个问题。我正在使用centos 7。麻烦的制造者是防火墙。在每台服务器上使用“systemctl stop firewalld”将其全部关闭可以简单地解决问题。或者您可以使用如下命令

firewall-cmd --zone=public --add-port=2181/udp --add-port=2181/tcp --permanent" to configure all three ports ,include 2181,2888,3888 in each server.And then "firewall-cmd --reload
最终使用

zkServer.sh restart

重新启动服务器并解决问题

我和你的情况一样,我刚刚解决了这个问题

我的
conf/zoo.cfg
就像这样:

server.1=host-1:2888:3888
server.2=host-2:2888:3888
server.3=host-3:2888:3888
server.1=10.194.236.32:2888:3888
server.2=10.194.236.33:2888:3888
server.3=10.208.177.15:2888:3888
server.4=10.210.154.23:2888:3888
server.5=10.210.154.22:2888:3888
1      //at host  10.194.236.32
2      //at host  10.194.236.33
3      //at host  10.208.177.15
4      //at host  10.210.154.23
5      //at host  10.210.154.22
然后我设置
data/myid
文件内容如下:

server.1=host-1:2888:3888
server.2=host-2:2888:3888
server.3=host-3:2888:3888
server.1=10.194.236.32:2888:3888
server.2=10.194.236.33:2888:3888
server.3=10.208.177.15:2888:3888
server.4=10.210.154.23:2888:3888
server.5=10.210.154.22:2888:3888
1      //at host  10.194.236.32
2      //at host  10.194.236.33
3      //at host  10.208.177.15
4      //at host  10.210.154.23
5      //at host  10.210.154.22
最后重新启动zookeeper

检查zookeeper日志(/var/log/zookeeper)。它看起来像是建立了一个连接,这意味着它有一个记录

sudo /usr/lib/zookeeper/bin/zkServer.sh stop
sudo /usr/lib/zookeeper/bin/zkServer.sh start
我也遇到了同样的情况,这是因为一个进程打开了连接,但未能关闭它们。这最终超过了每主机连接的限制,我的日志中充斥着

2016-08-03 15:21:13,201 [myid:] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@188] - Too many connections from /172.31.38.64 - max is 50
假设zookeeper位于常用端口,您可以通过以下方式进行检查:

lsof -i -P | grep 2181

我也遇到了同样的问题。在我的例子中,问题在于iptables规则

要与zookeeper节点进行通信,必须为2181端口接受传入请求,同时,对于zookeeper节点之间的内部通信,必须为传入请求打开28883888端口

iptables -t nat -I PREROUTING -p tcp -s 10.0.0.0/24 --dport 2181 -j DNAT --to-destination serverIp:2181
iptables -t nat -I PREROUTING -p udp -s 10.0.0.0/24 --dport 2181 -j DNAT --to-destination serverIp:2181

iptables -t nat -I PREROUTING -p tcp -s 10.0.0.0/24 --dport 2888 -j DNAT --to-destination serverIp:2888
iptables -t nat -I PREROUTING -p udp -s 10.0.0.0/24 --dport 2888 -j DNAT --to-destination serverIp:2888

iptables -t nat -I PREROUTING -p tcp -s 10.0.0.0/24 --dport 3888 -j DNAT --to-destination serverIp:3888
iptables -t nat -I PREROUTING -p udp -s 10.0.0.0/24 --dport 3888 -j DNAT --to-destination serverIp:3888

sudo service iptables save

刚才我解决了同样的问题,发了一个帖子

简而言之,如果xx的zoo.cfg类似:

server.1=xx:2888:3888
server.2=yy:2888:3888
server.3=zz:2888:3888

那么xx的myid=1是必须的

如果有太多打开的连接,就会发生这种情况

尝试增加
maxClientCnxns
设置

发件人:

maxClientCnxns (无Java系统属性)

限制单个客户端(由IP地址标识)可与ZooKeeper集合的单个成员进行的并发连接数(在套接字级别)。这用于防止某些类型的DoS攻击,包括文件描述符耗尽。将其设置为0或忽略它将完全消除对并发连接的限制

您可以在配置文件中编辑设置。很可能可以在
/etc/zookeeper/conf/zoo.cfg
找到它


在现代ZooKeeper版本中,默认值为60。您可以通过在配置文件末尾添加
maxClientCnxns=4096
行来增加它。

如果Zookeeper服务器未运行或不再运行(即启动后崩溃),这是一个常见问题

首先,检查Zookeeper服务器是否正在运行。检查正在运行的进程的一种简单方法是grep:

# ps -ef | grep zookeeper
(运行几次以查看是否仍然存在相同的进程ID。它可能会使用新的进程ID继续重新启动。或者,如果您的Linux发行版支持systemd,您可以使用“systemctl status zookeeper”)

您应该看到该进程作为java进程运行:

# ps -ef | grep zookeeper
root       492     0  0 00:01 pts/1    00:00:00 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /root/zookeeper-3.5.0-alpha/bin/../build/classes:/root/zookeeper-3.5.0-alpha/bin/../build/lib/*.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/slf4j-log4j12-1.7.5.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/slf4j-api-1.7.5.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/servlet-api-2.5-20081211.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/netty-3.7.0.Final.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/log4j-1.2.16.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jline-2.11.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jetty-util-6.1.26.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jetty-6.1.26.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/javacc.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jackson-mapper-asl-1.9.11.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/jackson-core-asl-1.9.11.jar:/root/zookeeper-3.5.0-alpha/bin/../lib/commons-cli-1.2.jar:/root/zookeeper-3.5.0-alpha/bin/../zookeeper-3.5.0-alpha.jar:/root/zookeeper-3.5.0-alpha/bin/../src/java/lib/*.jar:/root/zookeeper-3.5.0-alpha/bin/../conf: -Xmx1000m -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /root/zookeeper-3.5.0-alpha/bin/../conf/zoo.cfg
如果没有,那么zookeeper日志文件中可能有指示问题的内容

要查找zookeeper日志文件,您应该首先确定其配置用于日志记录的位置。就我而言,我安装了zookeeper