ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
在windows環境使用Zookeeper時,需要在命令行調用zookeeper提供的相關的cmd腳本,這樣要經常進行zookeeper服務的開啟和關閉會比較麻煩,所以這篇博客提供了將Zookeeper注冊成windows服務的方法,接下來進行方法的演示:
1.下載並安裝zookeeper,下載prunsrv,並解壓,這里提供了我在csdn上傳的zookeeper和prunsrv的網址:
https://download.csdn.net/download/qq_28169869/10880956
https://download.csdn.net/download/qq_28169869/10880975
2.找到commons-daemon-1.0.15-bin-windows目錄下的prunsrv.exe,復制到zookeeper目錄的bin文件夾下,如果windows系統是64位的,復制 amd64 文件夾下的prunsrv.exe。
3.找到commons-daemon-1.0.15-bin-windows目錄下的prunmgr.exe,復制到zookeeper目錄的bin文件夾下。
4.配置環境變量 ZOOKEEPER_SERVICE,值為zookeeper_service,zookeeper_service是給zookeeper服務起的服務名;配置環境變量ZOOKEEPER_HOME,值為zookeeper的目錄。
5.在zookeeper的bin目錄下添加zkServerStop.cmd和install.bat,zkServerStop.cmd用來停止zookeeper的windows服務。
@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
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
從install.bat中可以看到,安裝服務使用bin中的zkServer.cmd和zkServerStop.cmd,用來啟動和停止zookeeper的服務,可以根據需要對這兩個文件進行配置。
9.在服務中啟動zookeeper服務,我在zkServer.cmd中使用了zoo.cfg的配置,客戶端端口使用的是2180。
tickTime=2000 initLimit=10 syncLimit=5 dataDir=D:\\zookeeper\\server\\zookeeper-data\\server dataLogDir=D:\\zookeeper\\server\\zookeeper-log\\server clientPort=2180 server.1=localhost:2890:3890
啟動zookeeper的windows服務,然后打開一個cmd,轉到zookeeper的bin目錄,輸入 zkCli.cmd -timeout 100 -server 127.0.0.1:2180,使用zookeeper提供的客戶端連接zookeeper服務。
這樣就可以正常連接到zookeeper服務了,可以用命令對zookeeper節點進行查看和操作
