从 idea 写了个客户端,想访问虚拟机上的 zookeeper Server
报错内容
zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for ...
原因
Linux 的防火墙处于安全考虑,默认不开放 ports 端口 (包括 zookeeper Server 的默认端口 2181) 的外部访问。所以客户端的访问会失败。
解决方案
首先查看防火墙运行状态
systemctl status firewalld
或者防火墙自带命令同样可以查看运行状态:
firewall-cmd --state
任选一种解决方案
- 永久关闭 Linux 虚拟机的防火墙 (自己机子上的虚拟机能有啥危险)
命令
暂时开启:systemctl start firewalld
暂时关闭:systemctl stop firewalld
永久关闭(重启生效):systemctl disable firewalld
- 设置开放 2181 端口的外部访问
查看已开放外部访问的所有端口
firewall-cmd --zone=public --list-ports
允许和禁止外部访问端口
开放2181端口
firewall-cmd --zone=public --add-port=8088/tcp --permanent
关闭2181端口
firewall-cmd --zone=public --remove-port=8088/tcp --permanent
开放关闭端口命令执行后,刷新配置
firewall-cmd --reload
.
.
.
亲测能成功。