使用 zkServer.sh start-foreground 启动可以看到报错信息,使用的时候还是用 zkServer.sh start 来启动服务。
1.第一次安装报错
安装包(apache-zookeeper-3.6.0.tar.gz)启动报错如下:
[root@aliyun conf]# zkServer.sh start-foreground ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain Caused by: java.lang.ClassNotFoundException: org.apache.zookeeper.server.quorum.QuorumPeerMain
类直接找不到,最近我把JDK从8换成了11,想着会不会是因为JDK的原因,上网查询了一下才知道,不带-bin的安装包是源码包,需要编译才能使用,没文化多可怕。
2.第二次安装报错
这次使用了已编译的安装包(apache-zookeeper-3.6.0-bin.tar.gz)启动报错如下:
2021-06-25 14:08:20,222 [myid:] - ERROR [main:ZooKeeperServerMain@79] - Unable to start AdminServer, exiting abnormally org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on address 0.0.0.0, port 8080 and command URL /commands at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:107) at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:138) at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:106) at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:64) at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:128) at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82) Caused by: java.io.IOException: Failed to bind to /0.0.0.0:8080
真是命运多舛,之前安装zookeeper时没有遇到问题,当时应该是(用了编译后的包且8080端口未被占用),之前真的是凭运气上车的 😃
3.问题解决
这个就很明白了,端口被占用,换端口就能解决问题:修改zoo.cfg文件,添加admin.serverPort=8088。再次启动,成功:
[root@aliyun ~]# jps 17669 QuorumPeerMain