這裏介紹在Windows環境下安裝和配置ZooKeeper,僅適用於在開發環境下的單機調試場景,勿用於正式的生產環境中。重點是將ZooKeeper配置成Windows服務,開機就自動啓動ZooKeeper服務,無需手動啓動。固然,我也參考了網上的一些博客,但發如今Win10系統下中止服務時會報「發生系統錯誤 1067」的錯誤,感受不爽,將中止服務腳本重寫了一下,不會再出現1067的錯誤警告框。html
ZooKeeper下載
apache
官網下載地址:zookeeper.apache.org/releases.ht…windows
在我本機的開發環境下,我使用的ZooKeeper版本是:3.4.14。
bash
一、在安裝ZooKeeper以前,須要先安裝JDK環境,並設置環境變量「JAVA_HOME」。app
二、將下載到的ZooKeeper壓縮包解壓,並進入conf配置文件目錄,例如:E:\dev-runtimes\zookeeper-3.4.10\conf。ui
三、複製「zoo_sample.cfg」,並重命名爲「zoo.cfg」。編碼
四、編輯「zoo.cfg」文件,設置ZooKeeper的數據存儲目錄(dataDir)和日誌目錄(dataLogDir),通常都設置在ZooKeeper的本目錄裏,以下:spa
dataDir=E:\\dev-runtimes\\zookeeper-3.4.10\\data
操作系統
dataLogDir=E:\\dev-runtimes\\zookeeper-3.4.10\\log
插件
注意路徑中的雙斜槓!
ZooKeeper的安裝到此完成。
一、下載Apache出品的通用後臺進程服務插件包:commons-daemon,
下載地址:archive.apache.org/dist/common…,目前最新版本是1.1.0。
二、解壓commons-daemon-1.1.0-bin-windows.zip,複製prunmgr.exe、prunsrv.exe到ZooKeepe安裝路徑的bin目錄下。注意,若是你的操做系統是64位的,則複製amd64目錄下的prunsrv.exe。
三、在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複製代碼
四、在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複製代碼
五、在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」編碼,否則在執行腳本時會出現亂碼。
六、以管理員身份運行腳本「zk-service-install.bat」,而後打開服務管理器,啓動ZooKeeper服務
七、查看ZooKeeper的服務端口2182是否處於偵聽狀態
至此,將ZooKeeper安裝成Windows系統服務的配置工做完成!