Zookeeper無法啓動

今天試着在服務器搭建了一下zookeeper,結果無法啓動,在網上搜了資料大概有下面這麼幾種BUG. 

是通過Zookeeper.out 日誌來排查的


1.zookeeper 3.4.6 啓動失敗。

很有可能是配置的日誌目錄在文件系統中沒有新建。


2.zookeeper 3.5+ 啓動失敗。

這個是我今天遇上的問題,報錯:

2015-03-24 16:16:44,231 [myid:] - ERROR [main:ZooKeeperServerMain@72] - Unable to start AdminServer, exiting abnormally
org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on port 8080, command URL /commands
        at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:89)
        at org.apache.zookeeper.server.ZooKeeperServerMain.runFromConfig(ZooKeeperServerMain.java:123)
        at org.apache.zookeeper.server.ZooKeeperServerMain.initializeAndRun(ZooKeeperServerMain.java:99)
        at org.apache.zookeeper.server.ZooKeeperServerMain.main(ZooKeeperServerMain.java:57)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:125)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:79)
Caused by: java.net.BindException: Address already in use
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
        at java.net.ServerSocket.bind(ServerSocket.java:376)
        at java.net.ServerSocket.<init>(ServerSocket.java:237)
        at java.net.ServerSocket.<init>(ServerSocket.java:181)
        at org.mortbay.jetty.bio.SocketConnector.newServerSocket(SocketConnector.java:80)
        at org.mortbay.jetty.bio.SocketConnector.open(SocketConnector.java:73)
        at org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.java:283)
        at org.mortbay.jetty.bio.SocketConnector.doStart(SocketConnector.java:147)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.mortbay.jetty.Server.doStart(Server.java:235)
        at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
        at org.apache.zookeeper.server.admin.JettyAdminServer.start(JettyAdminServer.java:85)
        ... 5 more

很明顯是由於端口占用。我服務器中的tomcat佔用了8080端口,而zookeeper最近的版本中有個內嵌的管理控制檯是通過jetty啓動,也會佔用8080 端口。

通過查看zookeeper的官方文檔,發現有3種解決途徑:

(1).刪除jetty。

(2)修改端口。

修改方法的方法有兩種,一種是在啓動腳本中增加 -Dzookeeper.admin.serverPort=你的端口號.一種是在zoo.cfg中增加admin.serverPort=沒有被佔用的端口號

(3)停用這個服務,在啓動腳本中增加"-Dzookeeper.admin.enableServer=false"

3.客戶端使用的zookeeper和部署在服務端的版本不一致。(這個是網上有人說的,我也沒遇到。)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章