zoukankan      html  css  js  c++  java
  • window下zookeeper的下载启动和报错等问题

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

      将zookeeper下载之后,解压到指定目录即可,无需安装。例如:解压到D:zookeeper-3.5.0-alphazookeeper-3.5.0-alpha。(下载的是3.5.0版本) 
    解压好了之后,进入conf文件夹,会发现有2个文件,log4j.properties和zoo_sample.cfg这2个文件。对于zoo_sample.cfg文件,需要先将文件名字修改成zoo.cfg文件才行,接下来修改里面配置,如下所示,给出了注释和简单的配置信息。

      

     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下的/和的处理方式。

      启动错误

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

      问题1

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

    D:Program Service Fileszookeeper-3.5.0-alphain>zkServer.cmd
    系统找不到指定的路径。
    Error: JAVA_HOME is incorrectly set.
    
    D:Program Service Fileszookeeper-3.5.0-alphain>call  "-Dzookeeper.log.dir=D:
    Program Service Fileszookeeper-3.5.0-alphain.." "-Dzookeeper.root.logger=IN
    FO,CONSOLE" -cp "D:Program Service Fileszookeeper-3.5.0-alphain..uildcla
    sses;D:Program Service Fileszookeeper-3.5.0-alphain..uildlib*;D:Progra
    m Service Fileszookeeper-3.5.0-alphain..*;D:Program Service Fileszookeepe
    r-3.5.0-alphain..lib*;D:Program Service Fileszookeeper-3.5.0-alphain..
    conf" org.apache.zookeeper.server.quorum.QuorumPeerMain "D:Program Service Fil
    eszookeeper-3.5.0-alphain..confzoo.cfg"
    '"-Dzookeeper.log.dir=D:Program Service Fileszookeeper-3.5.0-alphain.."' 不
    是内部或外部命令,也不是可运行的程序
    或批处理文件。
    
    D:Program Service Fileszookeeper-3.5.0-alphain>endlocal

      通过查找google发现,是因为我们的java安装在了如下目录:

    C:Program FilesJava

      这个路径中,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%injava.exe (
    11   echo Error: JAVA_HOME is incorrectly set.
    12   goto :eof
    13 )
    14 
    15 set JAVA=%JAVA_HOME%injava

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

     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%injava.exe" (
     7   echo Error: JAVA_HOME is incorrectly set.
     8   goto :eof
     9 )
    10 
    11 set JAVA=%JAVA_HOME%injava

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

      问题2

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

     1 D:Program Service Fileszookeeper-3.5.0-alphain>zkServer.cmd
     2 
     3 D:Program Service Fileszookeeper-3.5.0-alphain>call C:Program FilesJavajd
     4 k1.7.0_79injava "-Dzookeeper.log.dir=D:Program Service Fileszookeeper-3.5.0
     5 -alphain.." "-Dzookeeper.root.logger=INFO,CONSOLE" -cp "D:Program Service Fi
     6 leszookeeper-3.5.0-alphain..uildclasses;D:Program Service Fileszookeepe
     7 r-3.5.0-alphain..uildlib*;D:Program Service Fileszookeeper-3.5.0-alpha
     8 bin..*;D:Program Service Fileszookeeper-3.5.0-alphain..lib*;D:Program
     9 Service Fileszookeeper-3.5.0-alphain..conf" org.apache.zookeeper.server.quo
    10 rum.QuorumPeerMain "D:Program Service Fileszookeeper-3.5.0-alphain..confz
    11 oo.cfg"
    12 'C:Program' 不是内部或外部命令,也不是可运行的程序
    13 或批处理文件。
    14 
    15 D:Program Service Fileszookeeper-3.5.0-alphain>endlocal

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

    1 set JAVA="%JAVA_HOME%injava"

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

  • 相关阅读:
    lnmp分离部署
    Nginx
    Keepalived脑裂监控
    KVM虚拟化
    mysql中间件proxysql实现mysql读写分离
    分离部署lnmp
    nginx
    Keepalived脑裂监控
    keepalived高可用
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/lcngu/p/7806663.html
Copyright © 2011-2022 走看看