在 CentOS 上 ZooKeeper 连不上,常见原因可以归成几类,你对照排查一下:
最常见原因。
ps -ef | grep zookeeper
或
systemctl status zookeeper
确认:
netstat -lntp | grep 2181
# 或
ss -lntp | grep 2181
如果没有监听,说明没启动或启动失败。
CentOS 默认 firewalld 是开的。
systemctl status firewalld
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --reload
如果是云服务器,还要检查 安全组。
这是很多人踩的坑。
vi conf/zoo.cfg
如果有:
clientPortAddress=127.0.0.1
那只能本机连。
clientPortAddress=0.0.0.0
然后重启 ZooKeeper。
比如:
localhost 但不在本机正确示例:
192.168.1.10:2181
getenforce
如果是 Enforcing,可以临时关:
setenforce 0
或配置 SELinux 放行网络端口。
看日志最准:
tail -f logs/zookeeper-*.out
常见错误:
从客户端机器测试:
telnet 192.168.1.10 2181
# 或
nc -vz 192.168.1.10 2181
不通就是网络/防火墙问题。
如果你愿意,可以把下面信息贴出来,我可以直接帮你定位:
zoo.cfgtelnet/nc 测试结果