今天分享一个zookeeper集群连接问题的解决方法,也是困扰了我两天。
3台虚拟机启动3个zookeeper,myid分别是1,2,3,一个leader,一个follower,另一个
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
一直这样,无法连接。有时候是myid2无法连接,有时候是myid3无法连接,打开日志,发现如下报错
2023-05-18 22:00:48,187 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@919] - Notification time out: 6400
2023-05-18 22:00:48,189 [myid:3] - WARN [WorkerSender[myid=3]:QuorumCnxManager@685] - Cannot open channel to 2 at election address /192.168.190.131:3888
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at
连接被拒绝。然后我开始逐一排除
1、防火墙已经关了
2、zoo.cfg文件配置的也没有问题

这里的z1,z2,z3也可以换成每个虚拟机具体的ip地址。这样写是因为已经在/etc/hosts文件中配置过了。
3、myid设置的也没有问题。
4、端口也没有被占用。
5、每个zookeeper都确定启动了。
到这,我实在想不出问题在哪了,网上去搜,搜了两天,各种方法都试过了,问题还是没有解决。唉,我发现我老是遇到一些罕见的问题,搜遍全网都解决不了的那种。后面我想,可能是网络配置出了问题,因为只有2,和3有问题,并且只启动2和3,它俩无法连接。只有1是正常的。
/etc/sysconfig/network-scripts目录下的ifcfg.ens33,打开这个文件
ONBOOT="yes"
IPADDR=192.168.190.132
GATEWAY=192.168.190.2
DNS1=8.8.8.5
DNS2=223.5.5.1
这一部分,这是配置该虚拟机ip地址的,除了每台虚拟机的IPADDR不能相同外,DNS1和DNS2也都不能相同,把三个虚拟机中的DNS1和DNS2都改了之后。
service network restart 重启网络,我这里用的是CentOS7的Linux,其它版本的Linux命令可能不同。
删掉每个ZooKeeper中,zkData目录下的 version-02和zookeeper_server.pid。
然后启动每个ZooKeeper。
执行 zkServer.sh status 查看状态。

问题解决。
3万+





