Skip to content

Instantly share code, notes, and snippets.

@winse
Last active August 29, 2015 14:03
Show Gist options
  • Save winse/e406eead69dd20731bc1 to your computer and use it in GitHub Desktop.
Save winse/e406eead69dd20731bc1 to your computer and use it in GitHub Desktop.
在windows下测试zkServers集群模式的脚本,无需添加额外的配置脚本以conf/zoo_sample.cfg为模板添加/覆盖其他额外的参数。同时添加客户端四字码状态查询功能。

基于zookeeper-3.4.5

理论上3.4+版本都可以用。把cmd脚本放到bin目录下。

使用方式

  • 启动多实例
windows-zkServers.cmd cluster [安装服务的个数] [当前启动的个数] 
  • 启动单个实例
windows-zkServers.cmd one [需要启动的服务的serverid] 
  • 四字码状态查询
windows-zkServers.cmd four [host] [port] [conf cons crst dump envi gtmk ruok stmk srst *srvr *stat wchc wchp wchs mntr isro] 

参数说明

  • ZOO_TEMP 默认为%TEMP%的值

例子

E:\local\opt\bigdata\zookeeper-3.4.5\bin>wins-zkServer.cmd cluster 3 2

E:\local\opt\bigdata\zookeeper-3.4.5\bin>wins-zkServer.cmd one 3

E:\local\opt\bigdata\zookeeper-3.4.5\bin>wins-zkServer.cmd four localhost 2181 srvr
2014-07-14 09:28:15,269 [myid:] - INFO  [main:FourLetterWordMain@43] - connecting to localhost 2181
Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x600000000
Mode: follower
Node count: 4
@echo off
setlocal
call "%~dp0zkEnv.cmd"
set ZOO_DEBUG=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain
set FOURMAIN=org.apache.zookeeper.client.FourLetterWordMain
set ZOO_TEMP=%TEMP%
set USAGE="%~n0 [four|one|cluster] [args...]"
set CMD=%1
shift
if "%CMD%" == "four" (
goto :four
) else if "%CMD%" == "one" (
goto :start_one
) else if "%CMD%" == "cluster" (
goto :start_cluster
) else (
goto :usage
)
:usage
echo %USAGE%
goto :end
:four
echo off
set host=%1
set port=%2
set cmd=%3
rem org.apache.zookeeper.server.ServerCnxn.cmd2String
rem conf cons crst dump envi gtmk ruok stmk srst *srvr *stat wchc wchp wchs mntr isro
java "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %FOURMAIN% %host% %port% %cmd%
goto :end
:start_one
echo on
set server_one=%1
start java "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOO_TEMP%\zkcluster\%server_one%\zoo.cfg"
goto :end
:start_cluster
echo on
set server_conf_n=%1
set server_start_n=%2
mkdir %ZOO_TEMP%\zkcluster
copy /Y %~dp0..\conf\zoo_sample.cfg %ZOO_TEMP%\zkcluster\zoo_template.cfg
echo # >> %ZOO_TEMP%\zkcluster\zoo_template.cfg
for /L %%i in (1, 1, %server_conf_n%) do (
echo server.%%i=localhost:%%i888:%%i999 >> %ZOO_TEMP%\zkcluster\zoo_template.cfg
)
for /L %%i in (1, 1, %server_conf_n%) do (
mkdir %ZOO_TEMP%\zkcluster\%%i\
copy /Y %ZOO_TEMP%\zkcluster\zoo_template.cfg %ZOO_TEMP%\zkcluster\%%i\zoo.cfg
echo # >> %ZOO_TEMP%\zkcluster\%%i\zoo.cfg
rem echo dataDir=${zoo.tmp.dir}/zkcluster/%%i/ >> %ZOO_TEMP%\zkcluster\%%i\zoo.cfg
echo dataDir=%ZOO_TEMP:\=/%/zkcluster/%%i/>> %ZOO_TEMP%\zkcluster\%%i\zoo.cfg
echo # >> %ZOO_TEMP%\zkcluster\%%i\zoo.cfg
echo clientPort=218%%i>> %ZOO_TEMP%\zkcluster\%%i\zoo.cfg
echo %%i> %ZOO_TEMP%\zkcluster\%%i\myid
)
for /L %%i in (1, 1, %server_start_n%) do (
start java "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOO_TEMP%\zkcluster\%%i\zoo.cfg"
)
goto :end
:end
endlocal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment