zookeepr 启动后查看状态,发现没有启动,现象:
sudo ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/bin/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
“连接不到服务,可能没有启动”,异常日志会写在 zookeeper/bin 目录下的 zookeeper.out
文件中,查看
cat zookeeper.out
# 内容
nohup: failed to run command ‘java’: No such file or directory
意思是: zookeeper 没找到 java,但是本地 java 配置一切正常。
java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
echo $JAVA_HOME
/usr/local/bin/jdk1.8.0_141
解决办法:
在 zookeeper 启动时,会使用到 zkEnv.sh
。它里面负责寻找 jdk。
if [ "$JAVA_HOME" != "" ]; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
可以在 这里直接指定 JAVA_HOME
JAVA_HOME=/usr/local/bin/jdk1.8.0_141
if [ "$JAVA_HOME" != "" ]; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
再启动 zookeeper ,这个问题就解决了。