在使用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也用引号处理了,这样修改以后,再次启动就行了。