在刚接触到zookeeper的时候,linux启动时查看状态出现以下异常:
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
1、检查是否关闭防火墙,(systemctl status firewalld.service / systemctl stop firewalld.service);检查是否安装jdk,因为zookeeper的运行需要JVM环境,可以使用java和java -version命令来验证
2、查看zookeeper的端口2181是否已经被占用了,可以用 netstat -apn | grep 2181 查看 ,若是被占用,便杀掉这个进程。
3、如果上面的操作还解决不了问题,那么我们接着到zookeeper-3.4.5的data目录下,可以看到如下所示的文件,其中version-2文件夹和zookeeper_server.pid两个文件都是需要删除掉的。
4、若是还解决不了,就按照下面的继续检查
zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口。
通过查看zookeeper的官方文档,发现有3种解决途径:
方法一:删除jetty。
方法二:修改端口。
修改方法的方法有两种:
一种是在启动脚本中增加 -Dzookeeper.admin.serverPort=你的端口号.
-Dzookeeper.admin.serverPort=你的端口号
一种是在zoo.cfg中增加admin.serverPort=没有被占用的端口号
admin.serverPort=没有被占用的端口号
方法三:停用这个服务。
在启动脚本中增加-Dzookeeper.admin.enableServer=false
-Dzookeeper.admin.enableServer=false
zookeeper集群报错:Error: JAVA_HOME is not set and java could not be found in PATH.
在学习搭建zookeeper集群的时候会经常的启动和停止zookeeper服务,以及查看服务状态。一个一个启动非常麻烦,通过一段shell脚本来进行启动就非常方便了。
那么问题来了,单独启动zookeeper服务的时候是完全没问题的,通过脚本来启动的时候就会报错:
解决办法:
在zookeeper目录下的bin目录下,有一个zkEnv.sh文件,在文件代码部分的前面加上自己的JAVA_HOME
路径即可。
修改完成后再运行,问题解决。