完整报错信息
Cannot open channel to 3 at election address hadoop121/192.168.10.121:3888 java.net.ConnectException
解决方法
1.检查文件夹权限
检查当前用户是否拥有 Zookeeper 安装目录管理权限,没有的话需要进行授权:
sudo chown -R username:username /your_zookeeper_path
2.未监听所有IP
在 zoo.cfg
文件中授权监听所有 IP:
quorumListenOnAllIPs=true
添加完成后,注意分发到其它节点!
3.IP映射名称与 ID 不对应
我碰到的就是这种情况,排查了很久,服务以及端口都正常启动了,但是查看日志还是发现无法连接,zkCli.sh
中也一直报错。
在 Zookeeper 的官网发现,机器编号 ID 需要与 IP 或 IP 映射名称对应,我刚开始看还没反应过来。
我当前共有三台机器,如下所示:
192.168.10.120 hadoop120
192.168.10.121 hadoop121
192.168.10.122 hadoop122
那么你的 Zookeeper 机器编号 ID 必须是 0
、1
、2
然后在 zoo.cfg
配置文件中进行对应设置
server.0=hadoop120:2888:3888
server.1=hadoop121:2888:3888
server.2=hadoop122:2888:3888
重新启动 Zookeeper 查看服务运行状态:
问题解决,成功启动。