JobPlus知识库 IT 大数据 文章
解决Zookeeper无法启动的问题

 今天在启动zookeeper集群的单个zookeeper节点时总是报如下错误

  1. [root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh status

  2. JMX enabled by default

  3. Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg

  4. Error contacting service. It is probably not running.

  5. [root@zookeeper1 zookeeper-3.4.5]#

      于是尝试解决它,首先要想到的是是否安装了JDK,因为zookeeper的运行需要JVM环境,可以使用java和java -version命令来验证,如下所示,可以看到JDK已经正确安装。

  1. [root@zookeeper1 zookeeper-3.4.5]# java

  2. 用法: java [-options] class [args...]

  3. (执行类)

  4. 或 java [-options] -jar jarfile [args...]

  5. (执行 jar 文件)

  6. 其中选项包括:

  7. -d32 使用 32 位数据模型 (如果可用)

  8. -d64 使用 64 位数据模型 (如果可用)

  9. -server 选择 "server" VM

  10. 默认 VM 是 server.

  11.  
  12. -cp <目录和 zip/jar 文件的类搜索路径>

  13. -classpath <目录和 zip/jar 文件的类搜索路径>

  14. 用 : 分隔的目录, JAR 档案

  15. 和 ZIP 档案列表, 用于搜索类文件。

  16. -D<名称>=<值>

  17. 设置系统属性

  18. -verbose:[class|gc|jni]

  19. 启用详细输出

  20. -version 输出产品版本并退出

  21. -version:<值>

  22. 警告: 此功能已过时, 将在

  23. 未来发行版中删除。

  24. 需要指定的版本才能运行

  25. -showversion 输出产品版本并继续

  26. -jre-restrict-search | -no-jre-restrict-search

  27. 警告: 此功能已过时, 将在

  28. 未来发行版中删除。

  29. 在版本搜索中包括/排除用户专用 JRE

  30. -? -help 输出此帮助消息

  31. -X 输出非标准选项的帮助

  32. -ea[:<packagename>...|:<classname>]

  33. -enableassertions[:<packagename>...|:<classname>]

  34. 按指定的粒度启用断言

  35. -da[:<packagename>...|:<classname>]

  36. -disableassertions[:<packagename>...|:<classname>]

  37. 禁用具有指定粒度的断言

  38. -esa | -enablesystemassertions

  39. 启用系统断言

  40. -dsa | -disablesystemassertions

  41. 禁用系统断言

  42. -agentlib:<libname>[=<选项>]

  43. 加载本机代理库 <libname>, 例如 -agentlib:hprof

  44. 另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help

  45. -agentpath:<pathname>[=<选项>]

  46. 按完整路径名加载本机代理库

  47. -javaagent:<jarpath>[=<选项>]

  48. 加载 Java 编程语言代理, 请参阅 java.lang.instrument

  49. -splash:<imagepath>

  50. 使用指定的图像显示启动屏幕

  51. 有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。

  52. [root@zookeeper1 zookeeper-3.4.5]# java -version

  53. java version "1.8.0_112"

  54. Java(TM) SE Runtime Environment (build 1.8.0_112-b15)

  55. Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

  56. [root@zookeeper1 zookeeper-3.4.5]#


       那么下面我们便查看zookeeper的端口2181是否已经被占用了(当然,有可能大家已经改用其它端口了,这个根据大家的实际来操作),如下所示,可以看到,2181端口还真的被占用了!这就是问题的根源,我们可以看到占用2181端口的进程号是1403,那么我们便杀掉这个进程。

  1. [root@zookeeper1 zookeeper-3.4.5]# netstat -apn | grep 2181

  2. tcp 0 0 :::2181 :::* LISTEN 1403/java

  3. [root@zookeeper1 zookeeper-3.4.5]#


       杀掉进程的命令是kill -9 1403,杀掉进程之后再检查一下是否还有进程占用2181端口,发现已经没有进程占用了。

  1. [root@zookeeper1 zookeeper-3.4.5]# kill -9 1403

  2. [root@zookeeper1 zookeeper-3.4.5]# netstat -apn | grep 2181

  3. [root@zookeeper1 zookeeper-3.4.5]#

       下面我们再来启动zookeeper,就应该能正常启动了。

        如果上面的操作还解决不了问题,那么我们接着到zookeeper-3.4.5的data目录下,可以看到如下所示的文件,其中version-2文件夹和zookeeper_server.pid两个文件都是需要删除掉的。

  1. [root@zookeeper1 data]# ll

  2. 总用量 12

  3. -rw-r--r--. 1 root root 2 4月 26 05:31 myid

  4. drwxr-xr-x. 2 root root 4096 4月 26 07:03 version-2

  5. -rw-r--r--. 1 root root 4 4月 28 04:25 zookeeper_server.pid

  6. [root@zookeeper1 data]#

       删除操作如下,删完只剩下myid文件了。

  1. [root@zookeeper1 data]# rm -rf version-2/ zookeeper_server.pid

  2. [root@zookeeper1 data]# ls

  3. myid

  4. [root@zookeeper1 data]#

       我们再次尝试启动zookeeper,如下所示,发现zookeeper终于正常启动了。

 [root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh start

  1. JMX enabled by default

  2. Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg

  3. Starting zookeeper ... STARTED

  4. [root@zookeeper1 zookeeper-3.4.5]# bin/zkServer.sh status

  5. JMX enabled by default

  6. Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg

  7. Mode: follower

  8. [root@zookeeper1 zookeeper-3.4.5]#

       还有一种情况就是,启动zookeeper集群的某个节点时死活启动不了,把上面所说的三种情况都检查过了还是启动不了,这时我们可以先启动zookeeper的另外几个节点,等把其它节点启动好了,这个启动不了节点就自动启动好了!!!

       基本上这几种情况便可以解决zookeeper无法启动的问题了(如果还是不行,就要看看是不是安装zookeeper的步骤有错误了)


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
292人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序