在剛接觸到zookeeper的時候,linux啟動時查看狀態出現以下異常:
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.
1、檢查是否關閉防火牆,(systemctl status firewalld.service / systemctl stop firewalld.service);檢查是否安裝jdk,因為zookeeper的運行需要JVM環境,可以使用java和java -version命令來驗證
2、查看zookeeper的端口2181是否已經被占用了,可以用 netstat -apn | grep 2181 查看 ,若是被占用,便殺掉這個進程。
3、如果上面的操作還解決不了問題,那么我們接着到zookeeper-3.4.5的data目錄下,可以看到如下所示的文件,其中version-2文件夾和zookeeper_server.pid兩個文件都是需要刪除掉的。
4、若是還解決不了,就按照下面的繼續檢查
zookeeper最近的版本中有個內嵌的管理控制台是通過jetty啟動,也會占用8080 端口。
通過查看zookeeper的官方文檔,發現有3種解決途徑:
方法一:刪除jetty。
方法二:修改端口。
修改方法的方法有兩種:
一種是在啟動腳本中增加 -Dzookeeper.admin.serverPort=你的端口號.
-Dzookeeper.admin.serverPort=你的端口號
一種是在zoo.cfg中增加admin.serverPort=沒有被占用的端口號
admin.serverPort=沒有被占用的端口號
方法三:停用這個服務。
在啟動腳本中增加-Dzookeeper.admin.enableServer=false
-Dzookeeper.admin.enableServer=false
zookeeper集群報錯:Error: JAVA_HOME is not set and java could not be found in PATH.
在學習搭建zookeeper集群的時候會經常的啟動和停止zookeeper服務,以及查看服務狀態。一個一個啟動非常麻煩,通過一段shell腳本來進行啟動就非常方便了。
那么問題來了,單獨啟動zookeeper服務的時候是完全沒問題的,通過腳本來啟動的時候就會報錯:
解決辦法:
在zookeeper目錄下的bin目錄下,有一個zkEnv.sh文件,在文件代碼部分的前面加上自己的JAVA_HOME
路徑即可。
修改完成后再運行,問題解決。