windows环境下安装zookeeper(单机版)
Posted 晨港飞燕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows环境下安装zookeeper(单机版)相关的知识,希望对你有一定的参考价值。
一.安装
1.1 下载zookeeper
https://zookeeper.apache.org/releases.html#download
我用的是apache-zookeeper-3.6.2-bin.tar.gz
注意:zookeeper的安装路径不要有中文,建议也不要有空格,比如Program Files这样的路径
1.2 生成并修改zoo.cfg
在zookeeper的conf目录下复制一份zoo_sample.cfg文件,并重命名为zoo.cfg
修改zoo.cfg文件里面的路径(data,logs为新建目录)
# 存放内存数据库快照的目录
dataDir=D:\\\\Tools\\\\apache-zookeeper-3.6.2-bin\\\\data
# 存放事务日志目录
dataLogDir=D:\\\\Tools\\\\apache-zookeeper-3.6.2-bin\\\\logs
# AdminServer端口
admin.serverPort=7070
如果出现闪退,检查jdk的环境变量是否安装正确.路径中不要有中文
这要注意一点,zookeeper服务启动时会启动一个AdminServer的服务,端口会占用8080,如果你有启动别的项目占了8080端口就会报错无法启动,所以在这添加配置 admin.serverPort=7070 来将启动端口修改(7070随便填的,不冲突就行)。
问题记录:配置中路径是双斜杠,如果是单斜杠,启动时会出现下面两个文件夹,双斜杠或/不会出现
参数说明:
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
到这就基本安装完成了
1.3 启动服务
进入bin目录下,双击zkServer.cmd
1.4 验证是否安装成功
在bin目录下双击zkCli.cmd,打开客户端(此时的服务端zkServer的dos窗口不要关闭),出现"欢迎"字样,说明安装成功!
二.在windows系统中生成zookeeper服务
每次启动使用都得去运行zkServer.cmd脚本,如果觉的麻烦,可以把启动脚本注册成系统服务。
下载的Zookeeper是.cmd的批处理命令运行的,默认没有提供以windows服务的方式运行的方案。
为此,本文下载prunsrv 来作为zookeeper的服务管理,将zookeeper做成 windows 服务,避免每次关闭后,再启动还需要使用cmd。
2.1 下载prunsrv
apache官网下载地址:http://archive.apache.org/dist/commons/daemon/binaries/windows/,找到并下载commons-daemon-1.0.15-bin-windows.zip
解压之后将prunmgr.exe(监控服务配置及运行的程序)和prunsrv.exe(做服务的执行程序 )2个可执行文件复制到zookeeper的bin目录下
注意:64位机器用amd64/prunsrv.exe
2.2 配置环境变量
添加ZOOKEEPER_SERVICE, ZOOKEEPER_HOME两个环境变量
//服务名称(不要有中文)
ZOOKEEPER_SERVICE:zkServer
//设置到zookeeper安装目录
ZOOKEEPER_HOME:D:\\Tools\\apache-zookeeper-3.6.2-bin
2.3 新建install.bat脚本
在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
2.4 新建zkServerStop.cmd脚本
在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
2.5 启动服务
以管理员运行cmd,进入zookeeper的bin目录下D:\\Tools\\apache-zookeeper-3.6.2-bin\\bin,运行install.bat,(注意:运行前请确保zookeeper服务已经关闭)
下图表示服务已经安装成功
右击启动即可
问题记录:如果右击停止,会出现下面的提示,服务已经停止了
查看日志,网上有说是权限问题,有说要强制杀死进程,但是停止脚本zkServerStop.cmd中已经有/f选项
taskkill /PID %zkPID% /T /F
Commons Daemon procrun stderr initialized
错误: 无法终止 PID 6268 (属于 PID 12848 子进程)的进程。
原因: 该进程无法自行终止。
2.6 删除服务
以管理员运行cmd,输入sc delete zkServer回车即可删除服务。
参考:
https://blog.csdn.net/woshiwangdaye/article/details/89708810
https://www.cnblogs.com/zlslch/p/8561791.html
https://www.cnblogs.com/fps2tao/p/13869428.html
https://blog.csdn.net/love_spinach/article/details/78569373
以上是关于windows环境下安装zookeeper(单机版)的主要内容,如果未能解决你的问题,请参考以下文章