zkServer.sh start启动正常 zkServer.sh status启动异常 解决办法

    zkServer.sh start启动正常 zkServer.sh status启动异常 解决办法

 

问题如下:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

解决办法:肯定是先查日志,不是先百度

百度说的可能出现如下情况

status)# -q is necessary on some versions of linux where nc returns too quickly, and no stat result is outputclientPortAddress=`$GREP "^[[:space:]]*clientPortAddress[^[:alpha:]]" "$ZOOCFG" | sed -e 's/.*=//'`if ! [ $clientPortAddress ]thenclientPortAddress="localhost"ficlientPort=`$GREP "^[[:space:]]*clientPort[^[:alpha:]]" "$ZOOCFG" | sed -e 's/.*=//'`STAT=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \-cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain \$clientPortAddress $clientPort srvr 2> /dev/null    \| $GREP Mode`STAT1=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \-cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain \$clientPortAddress $clientPort srvr 2> test.log   \`echo "$STAT1"echo "${ZOO_LOG_DIR}"echo "$GREP"echo "$JAVA"echo "$clientPortAddress $clientPort"echo "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"echo "$STAT"if [ "x$STAT" = "x" ]thenecho "Error contacting service. It is probably not running."exit 1elseecho $STATexit 0fi;;
*)echo "Usage: $0 {start|start-foreground|stop|restart|status|upgrade|print-cmd}" >&2esac

 

我添加的代码如下:

    STAT1=`"$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \-cp "$CLASSPATH" $JVMFLAGS org.apache.zookeeper.client.FourLetterWordMain \$clientPortAddress $clientPort srvr 2> test.log   \`echo "$STAT1"echo "${ZOO_LOG_DIR}"echo "$GREP"echo "$JAVA"echo "$clientPortAddress $clientPort"echo "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"echo "$STAT"

 

打印出来,发现还真是存在异常, 查看test.log

有报错

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 4888; nested exception is: java.net.BindException: Address already in use (Bind failed)

查看

咋办 

ps -ef|grep zookeepernetstat -ntlp|grep 4888

发现都是如下程序

root      9750     1  0 17:24 pts/0    00:00:01 /usr/local/jdk1.8.0_121/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper/zookeeper-3.4.9/bin/../build/classes:/usr/local/zookeeper/zookeeper-3.4.9/bin/../build/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../zookeeper-3.4.9.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../src/java/lib/*.jar:/usr/local/zookeeper/zookeeper-3.4.9/bin/../conf:.:/usr/local/jdk1.8.0_121/lib/dt.jar:/usr/local/jdk1.8.0_121/lib/tools.jar:/usr/local/jdk1.8.0_121/jre/lib -Djava.rmi.server.hostname=192.168.121.77 -Dcom.sun.management.jmxremote.port=4888 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg

可以看到 jmxremote 对应的就是 4888发现脚本中还真有 4888 这个东西 , 那就 把端口改了呗

将 zkServer.sh 脚本

SERVER_JVMFLAGS="-Djava.rmi.server.hostname=192.168.121.78-Dcom.sun.management.jmxremote.port=4888-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false"

4888修改成 其他端口,即可启动正常

 

https://img-blog.csdn.net/20180322135423539


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部