1. 程式人生 > >解決Zookeeper無法啟動的問題

解決Zookeeper無法啟動的問題

今天在啟動zookeeper叢集的單個zookeeper節點時總是報如下錯誤

[[email protected] zookeeper-3.4.5]# bin/zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg Error contacting service. It is probably not running. [[email protected] zookeeper-3.4.5]#

      於是嘗試解決它,首先要想到的是是否安裝了JDK,因為zookeeper的執行需要JVM環境,可以使用java和java -version命令來驗證,如下所示,可以看到JDK已經正確安裝。 [

[email protected] zookeeper-3.4.5]# java 用法: java [-options] class [args...]            (執行類)    或  java [-options] -jar jarfile [args...]            (執行 jar 檔案) 其中選項包括:     -d32      使用 32 位資料模型 (如果可用)     -d64      使用 64 位資料模型 (如果可用)     -server      選擇 "server" VM                   預設 VM 是 server.       -cp <目錄和 zip/jar 檔案的類搜尋路徑>     -classpath <目錄和 zip/jar 檔案的類搜尋路徑>                   用 : 分隔的目錄, JAR 檔案                   和 ZIP 檔案列表, 用於搜尋類檔案。     -D<名稱>=<值>                   設定系統屬性     -verbose:[class|gc|jni]                   啟用詳細輸出     -version      輸出產品版本並退出     -version:<值>                   警告: 此功能已過時, 將在                   未來發行版中刪除。                   需要指定的版本才能執行     -showversion  輸出產品版本並繼續     -jre-restrict-search | -no-jre-restrict-search                   警告: 此功能已過時, 將在                   未來發行版中刪除。                   在版本搜尋中包括/排除使用者專用 JRE     -? -help      輸出此幫助訊息     -X            輸出非標準選項的幫助     -ea[:<packagename>...|:<classname>]     -enableassertions[:<packagename>...|:<classname>]                   按指定的粒度啟用斷言     -da[:<packagename>...|:<classname>]     -disableassertions[:<packagename>...|:<classname>]                   禁用具有指定粒度的斷言     -esa | -enablesystemassertions                   啟用系統斷言     -dsa | -disablesystemassertions                   禁用系統斷言     -agentlib:<libname>[=<選項>]                   載入本機代理庫 <libname>, 例如 -agentlib:hprof                   另請參閱 -agentlib:jdwp=help 和 -agentlib:hprof=help     -agentpath:<pathname>[=<選項>]                   按完整路徑名載入本機代理庫     -javaagent:<jarpath>[=<選項>]                   載入 Java 程式語言代理, 請參閱 java.lang.instrument     -splash:<imagepath>                   使用指定的影象顯示啟動螢幕 有關詳細資訊, 請參閱 http://www.oracle.com/technetwork/java/javase/documentation/index.html。 [
[email protected]
zookeeper-3.4.5]# java -version java version "1.8.0_112" Java(TM) SE Runtime Environment (build 1.8.0_112-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode) [[email protected] zookeeper-3.4.5]# 

       那麼下面我們便檢視zookeeper的埠2181是否已經被佔用了(當然,有可能大家已經改用其它埠了,這個根據大家的實際來操作),如下所示,可以看到,2181埠還真的被佔用了!這就是問題的根源,我們可以看到佔用2181埠的程序號是1403,那麼我們便殺掉這個程序。 [

[email protected] zookeeper-3.4.5]# netstat -apn | grep 2181 tcp        0      0 :::2181                     :::*                        LISTEN      1403/java            [[email protected] zookeeper-3.4.5]#

       殺掉程序的命令是kill -9 1403,殺掉程序之後再檢查一下是否還有程序佔用2181埠,發現已經沒有程序佔用了。 [[email protected] zookeeper-3.4.5]# kill -9 1403 [[email protected] zookeeper-3.4.5]# netstat -apn | grep 2181 [[email protected] zookeeper-3.4.5]#        下面我們再來啟動zookeeper,就應該能正常啟動了。

        如果上面的操作還解決不了問題,那麼我們接著到zookeeper-3.4.5的data目錄下,可以看到如下所示的檔案,其中version-2資料夾和zookeeper_server.pid兩個檔案都是需要刪除掉的。 [[email protected] data]# ll 總用量 12 -rw-r--r--. 1 root root    2 4月  26 05:31 myid drwxr-xr-x. 2 root root 4096 4月  26 07:03 version-2 -rw-r--r--. 1 root root    4 4月  28 04:25 zookeeper_server.pid [[email protected] data]#        刪除操作如下,刪完只剩下myid檔案了。 [[email protected] data]# rm -rf version-2/ zookeeper_server.pid  [[email protected] data]# ls myid [[email protected] data]#

       我們再次嘗試啟動zookeeper,如下所示,發現zookeeper終於正常啟動了。

[[email protected] zookeeper-3.4.5]# bin/zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [[email protected] zookeeper-3.4.5]# bin/zkServer.sh status JMX enabled by default Using config: /usr/local/zookeeper-3.4.5/bin/../conf/zoo.cfg Mode: follower [[email protected] zookeeper-3.4.5]# 

       還有一種情況就是,啟動zookeeper叢集的某個節點時死活啟動不了,把上面所說的三種情況都檢查過了還是啟動不了,這時我們可以先啟動zookeeper的另外幾個節點,等把其它節點啟動好了,這個啟動不了節點就自動啟動好了!!!

       基本上這幾種情況便可以解決zookeeper無法啟動的問題了(如果還是不行,就要看看是不是安裝zookeeper的步驟有錯誤了) ---------------------  作者:在京奮鬥者  來源:CSDN  原文:https://blog.csdn.net/u012453843/article/details/70878117  版權宣告:本文為博主原創文章,轉載請附上博文連結!