個人博客 :https://www.siyuan.run
CSDN:https://blog.csdn.net/siyuan
微信小程序:思遠Y
下載
下載地址: https://mirrors.cnnic.cn/apache/zookeeper/
PS:zookeeper 從3.5.5以后的版本帶有bin標識的包,否則啟動的時候會報錯:“ 錯誤: 找不到或無法加載主類org.apache.zookeeper.server.quorum.QuorumPeerMain ” 。 tar.gz的包里面是只是源碼的包無法直接使用, 帶有bin名稱的包才是我們想要的下載可以直接使用的里面有編譯后的二進制的包 。
安裝
無需安裝,解壓到你要存放的目錄即可,我存放再D盤。
配置
- 修改文件名: 將zoo_simple.cfg文件名修改為zoo.cfg。
- 配置日志存放路徑
# The number of milliseconds of each tick
# Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發 送一個心跳。
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
# 集群中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量)
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# 集群中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# Zookeeper 將寫數據的日志文件也保存在這個目錄里
# 因為后面配置集群,所以再data后面使用目錄區分,單機版使用數字0目錄
dataDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\data\\0
# Zookeeper 保存日志文件的目錄
dataLogDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\log\\0
# the port at which the clients will connect
# 這個端口就是客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#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
單機版
啟動
找到bin
目錄下zkServer.cmd
雙擊打開
測試
檢查啟動是否成功,雙擊打開zkCli.cmd
PS:如果打開
zkServer.cmd
閃退可以再zkServer.cmd
文件末尾增加pause
,這樣就不會閃退了,方便查看報錯信息,具體如下:echo on call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %* pause endlocal
集群版
配置
- 復制三個
zoo.cfg
,分別命名zoo1.cfg
,zoo2.cfg
,zoo3.cfg
zoo1.cfg
#dataDir=/tmp/zookeeper
# Zookeeper 將寫數據的日志文件也保存在這個目錄里
dataDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\data\\1
# Zookeeper 保存日志文件的目錄
dataLogDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\log\\1
# the port at which the clients will connect
clientPort=2181
#添加集群配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo2.cfg
# Zookeeper 將寫數據的日志文件也保存在這個目錄里
dataDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\data\\2
# Zookeeper 保存日志文件的目錄
dataLogDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\log\\2
# the port at which the clients will connect
clientPort=2181
#添加集群配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo3.cfg
# Zookeeper 將寫數據的日志文件也保存在這個目錄里
dataDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\data\\3
# Zookeeper 保存日志文件的目錄
dataLogDir=D:\\Install\\zookeeper\\apache-zookeeper-3.5.8-bin\\log\\3
# the port at which the clients will connect
clientPort=2181
#添加集群配置
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
- 在data目錄下分別創建1、2、3目錄
分別在1、2、3目錄中創建myid
文件。1目錄下的myid存放1;2目錄下的myid存放2;3目錄下的myid存放3。
- 復制三個
zkServer.cmd
,分別命名:zkServer-1.cmd
、zkServer-2.cmd
、zkServer-3.cmd
zkServer-1.cmd
、zkServer-2.cmd
、zkServer-3.cmd
配置cfg
文件路徑,添加一句
set ZOOCFG=..\conf\zoo1.cfg
zkServer-1.cmd
setlocal
call "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOOCFG=..\conf\zoo1.cfg
set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.logecho on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*endlocal
zkServer-2.cmd
setlocal
call "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOOCFG=..\conf\zoo2.cfg
set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.logecho on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*endlocal
zkServer-3.cmd
setlocal
call "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set ZOOCFG=..\conf\zoo3.cfg
set ZOO_LOG_FILE=zookeeper-%USERNAME%-server-%COMPUTERNAME%.logecho on
call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" "-Dzookeeper.log.file=%ZOO_LOG_FILE%" "-XX:+HeapDumpOnOutOfMemoryError" "-XX:OnOutOfMemoryError=cmd /c taskkill /pid %%%%p /t /f" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %*endlocal
啟動
雙擊打開zkServer-1.cmd
、zkServer-2.cmd
、zkServer-3.cmd
,開始啟動zkServer-1.cmd
時會報錯原因是zkServer-2.cmd
、zkServer-3.cmd
還未啟動,因此zookeeper
之間交互的時候是不通的。等剩下的集群服務器啟動以后,就不會出現報錯了。