将kafka以及zookeeper配置成windows服务,开机启动的两种方式


 

将kafka或zookeeper安装成windows的服务

方式一 使用nssm软件进行配置:

1、先解压好nssm这软件,然后进入 D:\nssm-2.24\win64>
2、 .\nssm install 会弹出一个nssm service installer
3、 application path :E:\kafka_2.11-1.1.1\bin\windows\kafka-server-start.bat
4、 startup directory : E:\kafka_2.11-1.1.1\bin\windows 上面选择后会自动选择出来
5、 Arguments: E:\kafka_2.11-1.0.1\config\server.properties
6、然后记得写服务名称kafka就行了

 

 

 

 

 

 

配置zookeeper服务的时候,和kafka大体上是一致的

nssm停止服务的设置为默认设置如下:

 

 经测试,在windows的服务管理中右键停止服务,观察对应的java进程已经停止。

方式二 commons-daemon-1.0.15-bin-windows:

1)64位系统进入amd64目录,复制   prunsrv.exe 到  

2)复制  commons-daemon-1.0.15-bin-windows 目录下 prunmgr.exe  到  zookeeper/bin目录下

5.为Zookeeper配置环境变量

添加ZOOKEEPER_SERVICE,ZOOKEEPER_HOME两个环境变量

ZOOKEEPER_SERVICE:服务名称(不要有中文),我这里取的是,命名为zookeeper_service 

ZOOKEEPER_HOME: 取zookeeper的目录 :

这里可以不用在环境变量里设置,而是在下面步骤编写的install.bat文件中设置上下文生效的环境变量

6.在zookeeper/bin目录下创建:zkServerStop.cmd   文件(可以创建一个txt,然后将后缀改为.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

在实际操作过程中,发现使用上面的脚本并不起作用,不能停止服务。

因为无论是zookeeper还是kafka都是使用的java.exe进程启动的,

所以本质上是要停止对应的java进程,下面的代码是采用根据端口号获取进程pid,然后kill掉pid的方式

@echo off
rem 设置监听的端口号,zookeeper默认端口号2181,kafka默认端口号9092
set port=2181
echo port : %port%

for /f "usebackq tokens=1-5" %%a in (`netstat -ano ^| findstr %port%`) do (
    if [%%d] EQU [LISTENING] (
        set pid=%%e
    )
)

for /f "usebackq tokens=1-5" %%a in (`tasklist ^| findstr %pid%`) do (
    set image_name=%%a
)

echo now will kill process : pid %pid%, image_name %image_name%

rem 根据进程ID,kill进程
taskkill /f /pid %pid%

7.在zookeeper/bin目录下创建:install.bat 

内容如下:

@echo off
set BASEDIR=%CD%

rem 设置程序名称
set SERVICE_EN_NAME=zk_service
set ZOOKEEPER_HOME=F:\zookeeper-3.6.1-binset SERVICE_CH_NAME=zookeeper_service
set SRV=%ZOOKEEPER_HOME%\bin\prunsrv.exe
rem 输出信息
echo SERVICE_NAME: %SERVICE_EN_NAME%
echo ZOOKEEPER_HOME: %ZOOKEEPER_HOME%
rem 安装
prunsrv.exe //RS//"%SERVICE_EN_NAME%" --DisplayName="Zookeeper (%SERVICE_EN_NAME%)" --Description="Zookeeper (%SERVICE_EN_NAME%)" --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


pause off

8.双击install.bat即可安装服务,再去服务里面启动即可

参考地址:

使用nssm设置文件为服务启动

zookeeper在windows下设置为服务启动(不需双击zkServer.cmd)

nssm常用命令(在Windows系统下安装服务的工具)

通过bat脚本停止java进程的三个方法

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM