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