阅读 492

Windows下以后台服务的方式配置ZooKeeper

这里介绍在Windows环境下安装和配置ZooKeeper,仅适用于在开发环境下的单机调试场景,勿用于正式的生产环境中。重点是将ZooKeeper配置成Windows服务,开机就自动启动ZooKeeper服务,无需手动启动。当然,我也参考了网上的一些博客,但发现在Win10系统下停止服务时会报“发生系统错误 1067”的错误,感觉不爽,将停止服务脚本重写了一下,不会再出现1067的错误警告框。

ZooKeeper下载

官网下载地址:zookeeper.apache.org/releases.ht…


在我本机的开发环境下,我使用的ZooKeeper版本是:3.4.14。

ZooKeeper安装

1、在安装ZooKeeper之前,需要先安装JDK环境,并设置环境变量“JAVA_HOME”。

2、将下载到的ZooKeeper压缩包解压,并进入conf配置文件目录,例如:E:\dev-runtimes\zookeeper-3.4.10\conf。

3、复制“zoo_sample.cfg”,并重命名为“zoo.cfg”。

4、编辑“zoo.cfg”文件,设置ZooKeeper的数据存储目录(dataDir)和日志目录(dataLogDir),一般都设置在ZooKeeper的本目录里,如下:

dataDir=E:\\dev-runtimes\\zookeeper-3.4.10\\data

dataLogDir=E:\\dev-runtimes\\zookeeper-3.4.10\\log

注意路径中的双斜杠!

ZooKeeper的安装到此完成。  

ZooKeeper服务配置 

1、下载Apache出品的通用后台进程服务插件包:commons-daemon,

下载地址:archive.apache.org/dist/common…,目前最新版本是1.1.0。

 2、解压commons-daemon-1.1.0-bin-windows.zip,复制prunmgr.exe、prunsrv.exe到ZooKeepe安装路径的bin目录下。注意,如果你的操作系统是64位的,则复制amd64目录下的prunsrv.exe。 


3、在ZooKeepe根目录下创建服务安装脚本:zk-service-install.bat

@echo off
 
REM #
REM # 说明:在Windows系统中安装ZooKeeper服务,实现以服务的方式启动ZooKeeper
REM # 注意:此脚本必须拷贝到ZooKeeper的根目录,否则运行报错
REM # ZK_HOME:			ZooKeeper安装目录
REM # ZK_DATA_DIR:		ZooKeeper数据目录
REM # ZK_SERVICE_NAME:	ZooKeeper服务名
REM # DATE:			2019-11-01 15:37:55
REM # Author:			万里
REM #
REM # 服务启动命令:net start ZooKeeper
REM # 服务停止命令:net stop ZooKeeper
 
CD /d %~dp0
SET ZK_HOME=%CD%
SET ZK_DATA_DIR=%ZK_HOME%\data
SET ZK_LOG_DIR=%ZK_HOME%\log
SET ZK_SERVICE_NAME=ZooKeeper
if not exist %ZK_DATA_DIR% mkdir %ZK_DATA_DIR%
if not exist %ZK_LOG_DIR% mkdir %ZK_LOG_DIR%
 
:: 安装ZooKeeper的Windows服务
%ZK_HOME%\bin\prunsrv.exe "//IS//%ZK_SERVICE_NAME%" ^
--DisplayName="%ZK_SERVICE_NAME%" ^
--Description="%ZK_SERVICE_NAME%" ^
--Startup=auto ^
--StartMode=exe ^
--StartPath=%ZK_HOME% ^
--StartImage=%ZK_HOME%\bin\zkServer.cmd ^
--StopPath=%ZK_HOME%\ ^
--StopImage=%ZK_HOME%\zk-stop.bat ^
--StopMode=exe ^
--StopTimeout=5 ^
--LogPath=%ZK_LOG_DIR% ^
--LogPrefix=zookeeper-wrapper ^
--PidFile=zookeeper.pid ^
--LogLevel=Info ^
--StdOutput=auto ^
--StdError=auto
 
pause复制代码

4、在ZooKeepe根目录下创建服务卸载脚本:zk-service-remove.bat

@echo off
 
REM #
REM # 说明:卸载ZooKeeper的Windows服务
REM # 注意:此脚本必须拷贝到ZooKeeper的根目录,否则运行报错
REM # DATE:			2019-11-01 15:29:50
REM # Author:			万里
REM #
 
CD /d %~dp0
%CD%\bin\prunsrv.exe //DS//ZooKeeper复制代码

5、在ZooKeepe根目录下创建服务停止脚本:zk-stop.bat

@echo off
 
REM #
REM # 说明:以杀进程的方式停止ZooKeeper服务
REM # 注意:此脚本必须拷贝到ZooKeeper的根目录,否则运行报错
REM # DATE:	2019-11-01 16:51:16
REM # Author:	万里
REM #
 
setlocal
 
CD /d %~dp0
 
:: 以杀进程的方式停止ZooKeeper服务
SET /p zkPID=<%CD%\log\zookeeper.pid
taskkill /PID %zkPID% /T /F
 
endlocal复制代码

特别注意:上述三个bat脚本的字符编码要设置成“ANSI”编码,不然在执行脚本时会出现乱码。


6、以管理员身份运行脚本“zk-service-install.bat”,然后打开服务管理器,启动ZooKeeper服务


7、查看ZooKeeper的服务端口2182是否处于侦听状态


至此,将ZooKeeper安装成Windows系统服务的配置工作完成!