Windows下安装zookeeper
参考资源
前置条件
- jdk,至于需要哪个版本没有查到准确的匹配关系,但建议jdk的版本不要太高,本人在安装的过程中使用的jdk8。
安装包
版本
- 3.7.1
官网地址
百度网盘
链接:https://pan.baidu.com/s/1ncCgq7VtRYqIY3tq-jmJ4w
提取码:piy2
安装步骤
解压
获取apache-zookeeper-3.7.1-bin.tar.gz文件后,解压到计划安装的目录,主要安装路径不要有中文,也不要有空格,例如Program Files这样的路径。这里将压缩包解压到C:\kafka\apache-zookeeper-3.7.1-bin路径下
新建并修改zoo.cfg配置文件
到apache-zookeeper-3.7.1-bin\conf目录下复制一份zoo_sample.cfg文件并重命名为zoo.cfg。
修改或者新增配置项:
# 存放内存数据库快照的目录
dataDir=C:\\kafka\\apache-zookeeper-3.7.1-bin\\data
# 存放事务日志目录
dataLogDir=C:\\kafka\\apache-zookeeper-3.7.1-bin\\logs
# AdminServer端口
admin.serverPort=7070
注意:
zookeeper服务启动时会启动一个AdminServer的服务,默认端口占用8080,我这里有其他服务占用了该端口就添加了该配置,修改了该端口号,不冲突就行。
启动服务
进入bin目录,双击zkServer.cmd启动服务。
验证服务
保持zkServer窗口打开状态,进入bin目录,双击zkCli.md,打开客户端窗口,直到出现Welcome to Zookeeper!字样,说明安装成功。
注册Windows系统服务
虽然通过双击zkServer.cmd脚本即可启动zookeeper服务,但是每次都得去运行该脚本,不小心被人关闭窗口还会带来麻烦,这里向大神学习了将启动脚本注册成Windows系统服务方法,便于后期的使用。
我在使用的过程中对比了通过使用prunsrv和nssm工具分别将zookeeper注册成windows服务,发现nssm更简单些,这里一并记录下来。
prunsrv方式
安装包
版本
- 1.3.1
官网地址
官方下载地址
百度网盘
链接:https://pan.baidu.com/s/1fD5Htj9eOT3ztRm84V8AHQ
提取码:fgzm
安装步骤
准备prunsrv
完成下载之后,解压并将prunmgr.exe(监控服务配置及运行的程序)和prunsrv.exe(做服务的执行程序)2个执行文件复制到zookeeper的bin目录下
注意:
64位机器使用amd64/prunsrv.exe
配置环境变量
添加ZOOKEEPER_SERVICE和ZOOKEEPER_HOME两个环境变量
# 服务名称(不要有中文)
ZOOKEEPER_SERVICE:zkServer
# zookeeper安装目录
ZOOKEEPER_HOME:C:\kafka\apache-zookeeper-3.7.1-bin
新建注册服务脚本
在zookeeper的bin目录下新建一个install.bat脚本文件,用于注册服务,脚本内容如下:
prunsrv.exe "//IS//%ZOOKEEPER_SERVICE%" ^
--DisplayName="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
--Description="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
--Startup=auto --StartMode=exe ^
--StartPath=%ZOOKEEPER_HOME% ^
--StartImage=%ZOOKEEPER_HOME%\bin\zkServer.cmd ^
--StopPath=%ZOOKEEPER_HOME%\ ^
--StopImage=%ZOOKEEPER_HOME%\bin\zkServerStop.cmd ^
--StopMode=exe --StopTimeout=5 ^
--LogPath=%ZOOKEEPER_HOME% --LogPrefix=zookeeper-wrapper ^
--PidFile=zookeeper.pid --LogLevel=Info --StdOutput=auto --StdError=auto
新建停止服务脚本
在zookeeper的bin目录下新建一个zkServerStop.cmd的脚本文件,用于停止服务,脚本内容如下:
@echo off
setlocal
TASKLIST /svc | findstr /c:"%ZOOKEEPER_SERVICE%" > %ZOOKEEPER_HOME%\zookeeper_svc.pid
FOR /F "tokens=2 delims= " %%G IN (%ZOOKEEPER_HOME%\zookeeper_svc.pid) DO (
@set zkPID=%%G
)
taskkill /PID %zkPID% /T /F
del %ZOOKEEPER_HOME%/zookeeper_svc.pid
endlocal
注册服务
以管理员身份启动cmd,进入zookeeper的bin目录下,执行install.bat脚本(在执行脚本前请确保zookeeper服务已经关闭)。
c:\windows\system32>cd C:\kafka\apache-zookeeper-3.7.1-bin\bin
C:\kafka\apache-zookeeper-3.7.1-bin\bin>install.bat
安装完成后可以通过检查系统服务中是否存在名为Zookeeper(zkServer)的服务确认是否完成安装。
启动服务
# 在开始菜单-运行-services.msc,在启动的服务对话框中查询Zookeeper(zkServer)服务,并启动服务
停止服务
# 使用下面两种方式停止服务的时候均会报一个错误,但zkServer服务已经停止了
# 方式1
# 在开始菜单-运行-services.msc,在启动的服务对话框中查询Zookeeper(zkServer)服务,并停止服务
# 方式2
运行cmd,进入到zookeeper的bin目录下执行下列命令
cd C:\kafka\apache-zookeeper-3.7.1-bin\bin
zkServerStop.cmd
nssm方式
安装包
链接:https://pan.baidu.com/s/11R9usQn-3-kT0JKBfiv8TA
提取码:9edu
注册服务
将NSSM软件解压到指定目录下后再以管理员身份启动cmd窗口后,进入到该目录并通过命令启动nssm程序。
c:\windows\system32>cd G:\01work\00software\nssm-2.24\win64
G:\01work\00software\nssm-2.24\win64>nssm install
# 执行上述命令后会弹出一个NSSM service installer窗口
# 在Application标签页的Path栏输入C:\kafka\apache-zookeeper-3.7.1-bin\bin\zkServer.cmd
# 在Application标签页的Startup directory栏输入C:\kafka\apache-zookeeper-3.7.1-bin\bin
# 在Application标签页的Arguments栏空置即可(无启动参数)
# 在Application标签页的Service name栏写上服务名称zkServer
# 执行Install service操作
Service "zkServer" installed successfully!
# 看到上述提示信息后即表示服务安装成功
# 可以通过系统菜单-运行-services.msc,调出服务窗口后启动zkServer服务再参考上文中的【验证服务】章节确认服务是否成功
启动服务
# 在开始菜单-运行-services.msc,在启动的服务对话框中查询zkServer服务,并启动服务
停止服务
# 在开始菜单-运行-services.msc,在启动的服务对话框中查询zkServer服务,并停止服务
删除服务
#以管理员身份运行cmd,执行下列命令即可删除服务
sc delete zkServer