在使用dubbo等須要用到zookeeper,以前window下本地部署,啓動一直有問題,後面折騰了下才部署成功,這次記錄下來。html
將zookeeper下載以後,解壓到指定目錄便可,無需安裝。例如:解壓到D:\zookeeper-3.5.0-alpha\zookeeper-3.5.0-alpha。(下載的是3.5.0版本)
解壓好了以後,進入conf文件夾,會發現有2個文件,log4j.properties和zoo_sample.cfg這2個文件。對於zoo_sample.cfg文件,須要先將文件名字修改爲zoo.cfg文件才行,接下來修改裏面配置,以下所示,給出了註釋和簡單的配置信息。java
1 # ZK中的一個時間單元。ZK中全部時間都是以這個時間單元爲基礎,進行整數倍配置的。例如,session的最小超時時間是2*tickTime。 2 tickTime=2000 3 4 # Follower在啓動過程當中,會從Leader同步全部最新數據,而後肯定本身可以對外服務的起始狀態。Leader容許F在 initLimit 時間內完成這個工做。 5 initLimit=10 6 7 # 在運行過程當中,Leader負責與ZK集羣中全部機器進行通訊,例如經過一些心跳檢測機制,來檢測機器的存活狀態。 8 syncLimit=5 9 10 # 存儲快照文件snapshot的目錄。默認狀況下,事務日誌也會存儲在這裏。建議同時配置參數dataLogDir, 事務日誌的寫性能直接影響zk性能。 11 dataDir=D:/Program Service Files/zookeeper-3.5.0-alpha/data 12 13 # 事務日誌輸出目錄。儘可能給事務日誌的輸出配置單獨的磁盤或是掛載點,這將極大的提高ZK性能。 14 dataLogDir=D:/Program Service Files/zookeeper-3.5.0-alpha/dataLog 15 16 # 客戶端鏈接server的端口,即對外服務端口,通常設置爲2181吧。 17 clientPort=2181 18 19 # 單個客戶端與單臺服務器之間的鏈接數的限制,是ip級別的,默認是60,若是設置爲0,那麼代表不做任何限制。 20 #maxClientCnxns=60 21 22 # 23 # Be sure to read the maintenance section of the 24 # administrator guide before turning on autopurge. 25 # 26 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance 27 # 28 # The number of snapshots to retain in dataDir 29 #autopurge.snapRetainCount=3 30 # Purge task interval in hours 31 # Set to "0" to disable auto purge feature 32 #autopurge.purgeInterval=1
注:dataDir和dataLogDir文件夾,注意window下的/和\的處理方式。apache
配置完成以後,就能夠進入bin目錄下,啓動zkService.cmd了,當頁面滾動時,證實啓動成功了。
可是,咱們會常常遇到雙擊啓動時,一閃而過的場景,此時會什麼錯誤信息都看不到,最好的方式就是採起cmd啓動,這樣能看到報錯信息。
在此文件夾打開cmd執行以下命令,就會看到報錯信息了。服務器
當啓動zkService.cmd時,提示以下錯誤。找不到JAVA_HOME,提示沒有正確設置,檢查了下是有設置的。session
D:\Program Service Files\zookeeper-3.5.0-alpha\bin>zkServer.cmd
系統找不到指定的路徑。
Error: JAVA_HOME is incorrectly set.
D:\Program Service Files\zookeeper-3.5.0-alpha\bin>call "-Dzookeeper.log.dir=D:
\Program Service Files\zookeeper-3.5.0-alpha\bin\.." "-Dzookeeper.root.logger=IN
FO,CONSOLE" -cp "D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\build\cla
sses;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\build\lib\*;D:\Progra
m Service Files\zookeeper-3.5.0-alpha\bin\..\*;D:\Program Service Files\zookeepe
r-3.5.0-alpha\bin\..\lib\*;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..
\conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:\Program Service Fil
es\zookeeper-3.5.0-alpha\bin\..\conf\zoo.cfg"
'"-Dzookeeper.log.dir=D:\Program Service Files\zookeeper-3.5.0-alpha\bin\.."' 不
是內部或外部命令,也不是可運行的程序
或批處理文件。
D:\Program Service Files\zookeeper-3.5.0-alpha\bin>endlocal
經過查找google發現,是由於咱們的java安裝在了以下目錄:ide
C:\Program Files\Java
這個路徑中,program files含有空格,因此致使找不到java路徑。此時,可在bin同級目錄下,找到
zkEnv.cmd這個命令。用文本方式打開,能夠看到以下內容:性能
1 set ZOOCFG=%ZOOCFGDIR%\zoo.cfg 2 3 @REM setup java environment variables 4 5 if not defined JAVA_HOME ( 6 echo Error: JAVA_HOME is not set. 7 goto :eof 8 ) 9 10 if not exist %JAVA_HOME%\bin\java.exe ( 11 echo Error: JAVA_HOME is incorrectly set. 12 goto :eof 13 ) 14 15 set JAVA=%JAVA_HOME%\bin\java
報錯信息恰好是找不到java.exe,此時進行修改便可。對路徑加入」「處理,以下所示:ui
1 if not defined JAVA_HOME ( 2 echo Error: JAVA_HOME is not set. 3 goto :eof 4 ) 5 6 if not exist "%JAVA_HOME%\bin\java.exe" ( 7 echo Error: JAVA_HOME is incorrectly set. 8 goto :eof 9 ) 10 11 set JAVA=%JAVA_HOME%\bin\java
如上所示,這樣就能找到java路徑了。正確啓動了。
相似的還能發現會出現【JAVA_HOME is not set】、【JAVA_HOME is incorrectly set】處理方式都同樣了。
注:google說的是由於program files含有空格致使的,按照目前實驗來看,估計仍是由於window下\和/的問題致使的,引號以後,就能所有看成字符串路徑處理了,須要作個實驗看看。google
當修改完成以後,再次cmd下啓動,會發現還會報錯,提示 ‘C:\Program’ 不是內部或外部命令,也不是可運行的程序或批處理文件 報錯信息以下:spa
1 D:\Program Service Files\zookeeper-3.5.0-alpha\bin>zkServer.cmd 2 3 D:\Program Service Files\zookeeper-3.5.0-alpha\bin>call C:\Program Files\Java\jd 4 k1.7.0_79\bin\java "-Dzookeeper.log.dir=D:\Program Service Files\zookeeper-3.5.0 5 -alpha\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\Program Service Fi 6 les\zookeeper-3.5.0-alpha\bin\..\build\classes;D:\Program Service Files\zookeepe 7 r-3.5.0-alpha\bin\..\build\lib\*;D:\Program Service Files\zookeeper-3.5.0-alpha\ 8 bin\..\*;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\lib\*;D:\Program 9 Service Files\zookeeper-3.5.0-alpha\bin\..\conf" org.apache.zookeeper.server.quo 10 rum.QuorumPeerMain "D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\conf\z 11 oo.cfg" 12 'C:\Program' 不是內部或外部命令,也不是可運行的程序 13 或批處理文件。 14 15 D:\Program Service Files\zookeeper-3.5.0-alpha\bin>endlocal
根據前面來看,估計仍是window下的設置問題,和前面同樣,此時繼續修改zkEnv.cmd文件,修改以下:
1 set JAVA="%JAVA_HOME%\bin\java"
將最後的set JAVA也用引號處理了,這樣修改以後,再次啓動就行了。