ZooKeeper在启动报错ZooKeeper JMX enabled by default Error contacting service. It is probably not running.

博客围绕ZooKeeper启动报错问题展开,介绍了排查方法。包括检查hosts映射,确保克隆后及时修改ip;检查jdk环境变量使其生效;查看ZooKeeper配置文件是否有误;确认端口是否被占用并杀掉占用进程;在集群各机器运行启动命令并检查状态。

ZooKeeper JMX enabled by default

Using config: /export/servers/zookeeper-3.4.9/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

这个问题网上说了一大堆,都没有解决我的问题

说白了还是不理解Zookeeper的机制,有关ZooKeeper是原理自行百度或者找我的下一片文章

1、检查hosts的映射是否有问题

映射问题在与克隆后没有及时的修改ip地址

2、检查jdk环境变量,记住一定jdk环境变量生效

3、检查ZooKeeper的配置文件是否有错

这一步要是配错了,还是ZooKeeper安装次数少了,我笨安装了一天,都在解决报错问题

4、查看端口是否被占用,如果占用就把pid杀掉

5、因为Zookeeper是也是一个集群环境,sbin/zkServer.sh start 在每一台机器都要运行这个命令(比如master、slave1、slave2)

然后再去检查以下状态  ./sbin/zkServer.sh

=======华丽的分割线=======

<think>好的,我现在需要帮助用户解决ZooKeeper启动时出现的“JMX enabled by default”和“Error contacting service. It is probably not running”的问题。首先,我得仔细分析用户提供的引用信息,看看有没有常见的错误原因。 用户引用了多个来源,其中引用[3]提到“错误: 找不到或无法加载主类 org.apache.zookeeper.server.quorum.QuorumPeerMain”,这可能是因为ZooKeeper的环境变量配置不正确,或者启动脚本有问题。另外,引用[4]提到配置错误和集群环境的问题,比如每个节点都需要启动服务,或者端口被占用。 首先,我应该检查zoo.cfg配置是否正确。用户提到使用了三节点集群,所以需要确认每个节点的server.x配置是否正确,比如server.1、server.2、server.3是否对应正确的IP和端口。此外,dataDir指定的目录是否正确,并且每个节点的myid文件是否存在,内容是否正确。例如,myid文件中的数字是否与server.x中的x匹配。 接下来,检查JMX配置是否导致问题。虽然错误信息提到JMX enabled by default,但可能用户需要手动配置JMX端口或关闭JMX来测试是否是JMX引起的问题。例如,在zkServer.sh脚本中添加JVM参数来关闭JMX,或者指定JMX端口,避免冲突。 然后,查看日志文件是关键步骤。用户需要进入日志目录,查看具体的错误信息,比如是否有类找不到、端口冲突等。比如引用[3]中的错误提示找不到QuorumPeerMain类,这可能是因为CLASSPATH没有正确设置,或者ZooKeeper的jar包路径不正确。 另外,检查端口占用情况。ZooKeeper默认使用2181端口,如果被其他程序占用,会导致启动失败。使用netstat命令查看端口使用情况,必要时杀掉占用进程。 还有可能是集群配置问题。用户是否在所有节点上正确启动ZooKeeper服务?每个节点都需要执行zkServer.sh start,并且集群中的大多数节点需要处于运行状态才能选举出Leader。如果只有部分节点启动,可能会导致状态检查失败。 此外,用户的ZooKeeper版本可能有差异,比如3.4.x和3.6.x的配置方式不同,需要确认配置文件是否有变动。例如,3.6.x可能需要更多的配置项,或者某些参数名称有变化。 最后,建议用户逐步排查,从配置检查、日志分析到端口和集群状态确认,逐步缩小问题范围。可能需要用户提供更多日志细节或配置内容来进一步诊断。</think>### ZooKeeper JMX配置及服务未运行问题解决方案 #### 一、问题定位步骤 1. **检查配置文件`zoo.cfg`基础配置** - 确认`dataDir`路径正确且已创建对应目录 - 在集群模式下,验证`server.x=IP:port:port`配置正确性 $$server.1=192.168.1.10:2888:3888$$ $$server.2=192.168.1.11:2888:3888$$ $$server.3=192.168.1.12:2888:3888$$[^4] - 检查每个节点的`myid`文件是否与`server.x`编号匹配 2. **JMX配置验证** - 查看启动脚本`zkServer.sh`中的JMX参数配置 ```bash # 示例配置(添加在脚本开头) export JMXPORT=9999 # 指定JMX端口 ``` - 或尝试禁用JMX测试 ```bash ZK_SERVER_HEAP="-Dcom.sun.management.jmxremote=false" ./zkServer.sh start ``` 3. **日志分析(关键步骤)** - 查看日志文件`zookeeper-*.out`定位具体错误 ```bash tail -100f /moudle/zookeeper-3.6.2/logs/zookeeper-root-server-bigdata1.out ``` - 特别注意类加载错误(如`QuorumPeerMain`缺失)和端口冲突提示[^3] #### 二、常见解决方案 1. **类路径错误修复** - 确认`zookeeper.jar`存在于`CLASSPATH` ```bash # 在zkEnv.sh中添加 CLASSPATH="$ZOOCFGDIR:$ZOOCFGDIR/../lib/*" ``` 2. **端口冲突处理** - 检查2181/2888/3888端口占用 ```bash netstat -tulpn | grep ':2181\b' ``` - 强制释放端口(示例) ```bash kill -9 $(lsof -t -i:2181) ``` 3. **集群启动验证** - 在所有节点执行启动命令 ```bash # 三节点集群必须全部启动 ssh node1 "zkServer.sh start" ssh node2 "zkServer.sh start" ssh node3 "zkServer.sh start" ``` - 等待30秒后检查状态(需完成选举) #### 三、配置验证示例 ```properties # 正确配置文件示例(zoo.cfg) tickTime=2000 initLimit=10 syncLimit=5 dataDir=/var/lib/zookeeper clientPort=2181 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值