Zookeeper启动显示成功,zkServer.sh status报错 Error contacting service. It is probably not running.

博主遇到Zookeeper启动后,使用zkServer.sh status检查状态时报错'Error contacting service. It is probably not running.',尝试多种解决方案如删除dataDir文件、关闭防火墙、杀进程等未果。最终发现,需一次性启动所有集群节点,并等待一段时间后再查看状态,问题得以解决。

这个问题搞了我一个晚上和一个早上,终于解决了。大大的坑啊,希望大家引以为戒。

首先呢,这个我第一次配置后测试是没有问题的,但后来关机重启后,发现以下问题。JPS查看QuorumPeerMain启动成功,但用zkServer.sh status查看,发现以下错误。于是就上网搜索了很多案例,说什么把dataDir=/home/zkdata/ folder下面的除了myid都删除掉,还有关闭防火墙,kill 2181进程,但我都试过了,一样无效。甚是无奈。

[root@hadoop01 home]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop01 home]# js
-bash: js: command not found
[root@hadoop01 home]# jps
3117 QuorumPeerMai
### ZooKeeper `zkServer.sh status` 返回错误:`Error contacting service. It is probably not running` 当执行 `zkServer.sh status` 命令时,如果返回提示 `Error contacting service. It is probably not running`,这表明ZooKeeper服务可能未正常运行。以下是对该问题的全面分析和解决方法。 #### 1. **检查防火墙设置** ZooKeeper集群节点之间需要通过多个端口进行通信,包括客户端连接端口(默认2181)、选举端口(2888)和投票端口(3888)。如果防火墙未关闭或相关端口未开放,会导致节点之间无法通信,进而影响服务启动和状态查询。 ```bash # 查看当前防火墙状态 systemctl status firewalld # 关闭防火墙(仅用于测试) systemctl stop firewalld ``` 确保所有节点之间的这些端口是互通的[^4]。 #### 2. **确认每台主机是否都正确启动ZooKeeper** 在ZooKeeper集群中,Leader选举依赖于大多数节点的可用性。如果只启动部分节点,可能导致无法选出Leader,从而使整个集群处于不可用状态。应确保所有节点都已启动,并按照顺序先启动Leader节点再启动Follower节点[^4]。 #### 3. **检查 `zoo.cfg` 配置文件** 确保 `conf/zoo.cfg` 文件中的配置项正确无误。重点检查以下几个方面: - 数据目录路径是否存在且可读写; - `server.x` 条目中的IP地址和端口号是否正确; - 每个节点的 `myid` 文件内容是否与对应的 `server.x` 中编号一致。 例如: ```properties dataDir=/opt/module/zookeeper-3.4.10/data server.1=192.168.1.101:2888:3888 server.2=192.168.1.102:2888:3888 server.3=192.168.1.103:2888:3888 ``` 确保每个节点的 `myid` 文件内容与其 `server.x` 中的编号一致[^1]。 #### 4. **验证 `myid` 文件内容** 在每个节点的数据目录下,必须存在一个名为 `myid` 的文件,其内容为对应节点的唯一ID(如1、2、3)。例如,在 `server.2` 节点上: ```bash echo "2" > /opt/module/zookeeper-3.4.10/data/myid ``` 若 `myid` 文件缺失或数值不匹配,ZooKeeper将无法启动[^1]。 #### 5. **检查环境变量配置** ZooKeeper依赖Java运行环境,并且某些情况下启动脚本会依赖系统环境变量。确保 `/etc/profile` 或其他环境配置文件中正确设置了 `JAVA_HOME` 和 `ZOOKEEPER_HOME`,并在启动前执行: ```bash source /etc/profile ``` 这样可以避免由于环境变量未加载而导致的启动失败[^4]。 #### 6. **检查Java版本兼容性** ZooKeeper对Java版本有特定要求。使用 `java -version` 检查Java版本是否符合要求。如果出现如下错误: ``` java.lang.UnsupportedClassVersionError: org/apache/zookeeper/server/quorum/QuorumPeerMain : Unsupported major.minor version 52.0 ``` 说明当前Java版本过低,建议使用JDK 1.8及以上版本[^5]。 #### 7. **查看日志文件定位具体错误** ZooKeeper的日志文件通常位于数据目录下的 `logs` 子目录中。可以通过以下命令查找主日志文件: ```bash find / -name 'zookeeper.out' ``` 日志文件中会记录详细的启动信息和错误原因,帮助进一步排查问题[^3]。 #### 8. **尝试重启所有节点** 有时,ZooKeeper节点启动顺序不当或临时状态异常也会导致服务无法正常运行。可以尝试依次关闭所有节点,然后重新启动所有节点以恢复集群状态。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值