在使用dubbo等需要用到zookeeper,之前window下本地部署,启动一直有问题,后面折腾了下才部署成功,此次记录下来。

  将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文件才行,接下来修改里面配置,如下所示,给出了注释和简单的配置信息。

  

 # ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。
tickTime=2000 # Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。
initLimit=10 # 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。
syncLimit=5 # 存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。
dataDir=D:/Program Service Files/zookeeper-3.5.0-alpha/data # 事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。
dataLogDir=D:/Program Service Files/zookeeper-3.5.0-alpha/dataLog # 客户端连接server的端口,即对外服务端口,一般设置为2181吧。
clientPort=2181 # 单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。
#maxClientCnxns=60 #
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

  注:dataDir和dataLogDir文件夹,注意window下的/和\的处理方式。

  启动错误

  配置完成之后,就可以进入bin目录下,启动zkService.cmd了,当页面滚动时,证明启动成功了。 
  但是,我们会经常遇到双击启动时,一闪而过的场景,此时会什么错误信息都看不到,最好的方式就是采取cmd启动,这样能看到报错信息。 
  在此文件夹打开cmd执行如下命令,就会看到报错信息了。

  问题1

  当启动zkService.cmd时,提示如下错误。找不到JAVA_HOME,提示没有正确设置,检查了下是有设置的。

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安装在了如下目录:

C:\Program Files\Java

  这个路径中,program files含有空格,所以导致找不到java路径。此时,可在bin同级目录下,找到 
  zkEnv.cmd这个命令。用文本方式打开,可以看到如下内容:

 set ZOOCFG=%ZOOCFGDIR%\zoo.cfg

 @REM setup java environment variables

 if not defined JAVA_HOME (
echo Error: JAVA_HOME is not set.
goto :eof
) if not exist %JAVA_HOME%\bin\java.exe (
echo Error: JAVA_HOME is incorrectly set.
goto :eof
) set JAVA=%JAVA_HOME%\bin\java

  报错信息刚好是找不到java.exe,此时进行修改即可。对路径加入”“处理,如下所示:

 if not defined JAVA_HOME (
echo Error: JAVA_HOME is not set.
goto :eof
) if not exist "%JAVA_HOME%\bin\java.exe" (
echo Error: JAVA_HOME is incorrectly set.
goto :eof
) set JAVA=%JAVA_HOME%\bin\java

  如上所示,这样就能找到java路径了。正确启动了。 
  类似的还能发现会出现【JAVA_HOME is not set】、【JAVA_HOME is incorrectly set】处理方式都一样了。 
  注:google说的是因为program files含有空格导致的,按照目前实验来看,估计还是因为window下\和/的问题导致的,引号之后,就能全部当作字符串路径处理了,需要做个实验看看。

  问题2

  当修改完成之后,再次cmd下启动,会发现还会报错,提示 ‘C:\Program’ 不是内部或外部命令,也不是可运行的程序或批处理文件 报错信息如下:

 D:\Program Service Files\zookeeper-3.5.0-alpha\bin>zkServer.cmd

 D:\Program Service Files\zookeeper-3.5.0-alpha\bin>call C:\Program Files\Java\jd
k1.7.0_79\bin\java "-Dzookeeper.log.dir=D:\Program Service Files\zookeeper-3.5.0
-alpha\bin\.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:\Program Service Fi
les\zookeeper-3.5.0-alpha\bin\..\build\classes;D:\Program Service Files\zookeepe
r-3.5.0-alpha\bin\..\build\lib\*;D:\Program Service Files\zookeeper-3.5.0-alpha\
bin\..\*;D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\lib\*;D:\Program
Service Files\zookeeper-3.5.0-alpha\bin\..\conf" org.apache.zookeeper.server.quo
rum.QuorumPeerMain "D:\Program Service Files\zookeeper-3.5.0-alpha\bin\..\conf\z
oo.cfg"
'C:\Program' 不是内部或外部命令,也不是可运行的程序
或批处理文件。 D:\Program Service Files\zookeeper-3.5.0-alpha\bin>endlocal

  根据前面来看,估计还是window下的设置问题,和前面一样,此时继续修改zkEnv.cmd文件,修改如下:

 set JAVA="%JAVA_HOME%\bin\java"

  将最后的set JAVA也用引号处理了,这样修改之后,再次启动就好了。

window下zookeeper的下载启动和报错等问题的更多相关文章

  1. Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with

    Linux系统下启动MySQL报错:Neither host 'localhost.localdomain' nor 'localhost' could be looked up with 摘要 Li ...

  2. window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)

    window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)nodemon --watch 'app/**/*' -e ts --exec ...

  3. 【转】Eclipse下启动tomcat报错:/bin/bootstrap.jar which is referenced by the classpath, does not exist.

    转载地址:http://blog.csdn.net/jnqqls/article/details/8946964 1.错误: 在Eclipse下启动tomcat的时候,报错为:Eclipse下启动to ...

  4. Ubuntu下安装了java但启动eclipse报错说没装java

    参考资料:http://blog.csdn.net/happyteafriends/article/details/8290950 一.问题 在Ubuntu下安装了java并在~/.bashrc配置了 ...

  5. window下git的下载

    window下git的下载window下git的下载window下git的下载window下git的下载 https://git-scm.com/download/win https://git-sc ...

  6. Eclipse启动项目正常,放到tomcat下单独启动就报错的 一例

    一个老的ssh的项目,进行二次开发(增加一些新功能)后, 首先用Eclipse中集成的Tomcat启动没有任何问题,但是把启动后的webapps下得目录放到 windows的普通tomcat下单独启动 ...

  7. 【spring boot】spring cloud下spring boot微服务启动没有报错,但是访问访问不到

    spring cloud下spring boot微服务启动没有报错,但是访问访问不到 解决方法: 可能是端口被占用了,但是依旧启用成功了. 更改一下项目启用的端口号,再重新启动查看是否可以正常访问.

  8. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  9. 【Problem】xampp in ubuntu下命令行启动mysql报错: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/lampp/var/mysql/mysql.sock' (2)

    xampp in ubuntu下命令行启动mysql报错: reddevil@reddevil-Lenovo:/opt/lampp$ ./bin/mysql -u root -p Enter pass ...

随机推荐

  1. Eight (HDU - 1043|POJ - 1077)(A* | 双向bfs+康拓展开)

    The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've see ...

  2. 在Qt项目中添加全局宏变量来达到按方案编译的目的

    遇到一个需求,需要根据不同需要编译所需程序,本人采用了在QtCreator中建立不同的构建设置,配合宏的方式来实现: 1.在项目-构建设置中,添加构建配置2.在构建步骤里的qmake中的额外参数一栏填 ...

  3. Ubuntu安装python3虚拟环境

    大多数Linux自带python2.7,而Ubuntu1.6也自带python3.x,本文章主要记录virtualenv+vitualenvwrapper使用python3虚拟环境 虚拟环境好处不多说 ...

  4. Mysql建库建用户建表等常用命令

    格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输 ...

  5. 使用git(window)在github上存项目教程

    要托管到github,那你就应该要有一个属于你自己的github帐号,所以你应该先到github.com注册 打开浏览器 在地址栏输入地址:github.com 填写用户名.邮箱.密码 点击Sign ...

  6. PAT Basic 1012

    1012 数字分类 (20 分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和: A​2​​ = 将被 5 除后余 1 的数字 ...

  7. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) C. String Reconstruction 并查集

    C. String Reconstruction 题目连接: http://codeforces.com/contest/828/problem/C Description Ivan had stri ...

  8. 大数据hadoop生态圈

    大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它比作一个厨房所以需要的各种工具.锅碗瓢盆,各有各的用处,互相之间又有重合.你可 ...

  9. db2报错 Operation not allowed for reason

    1.DB2数据库表操作错误SQL0668N Operation not allowed for reason code "1" on table "XXXX". ...

  10. Linux命令第二篇

    作业二: 1)   在用户的主目录下创建目录test,进入test创建空文件file1 # ls /home/test file 2)   以长格式形式显示文件信息,注意文件的权限和所属用户和组 # ...