1. 安装环境准备
1.1 部署规划
软件安装路径 E:\zookeeper 端口规划 2192
2. Zookeeper安装部署
2.1 JDK安装部署
安装描述 新建software文件夹,将安装包拷贝到该文件夹下 JDK版本为jdk-8u131-windows-x64.exe,点击exe安装包; 在弹出的窗口,点击下一步; 根据需要修改安装路径,点击下一步; 安装JRE,点击下一步; 完成安装。 环境变量配置 打开控制面板-点击系统-高级系统设置-进入高级选项卡-环境变量-新建系统变量值:如下 变量名:JAVA_HOME 变量值:E:\Java\jdk1.8.0_131(按实际安装路径),如图下 新建系统变量CLASSPATH:如下 变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 如图下 修改PATH变量值 在PATH变量值前面增加JAVA变量值为: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 如下图,点击确定。
2.2 Zookeeper部署
下载apache-zookeeper-3.6.1-bin.tar.gz安装包 下载地址:https://zookeeper.apache.org/releases.html 1、上传apache-zookeeper-3.6.1-bin.tar.gz安装包到服务器; 2、解压安装包变重命名为zookeeper; 3、进入zookeeper目录,新建data文件夹和log文件夹; 4、将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg; 5、修改zoo.cgf配置文件(注意路径格式配置)
dataDir=E:/zookeeper/data
dataLogDir=E:/zookeeper/log
clientPort=2192
6、参数注释 tickTime:心跳时间,zk里使用的基本时间单位 initLimit:leader和follower之间最长的心跳时间,心跳时间为initLimittickTime秒 syncLimit:leader和follower之间发送消息,请求和应答的最大时间长度,时间长度为syncLimittickTime秒 maxClientCnxns:客户端连接上限 7、配置zk环境变量 打开控制面板-点击系统-高级系统设置-进入高级选项卡-环境变量-新建系统变量值:如下 变量名:ZOOKEEPER_HOME 变量值:E:\zookeeper(按实际安装路径),如下图 修改PATH变量值 在PATH变量值前面增加ZOOKEEPER_HOME变量值为: %ZOOKEEPER_HOME%\bin; 如下图,点击确定。 8、服务启动 (1)进入E:\zookeeper\bin,双击zkServer.cmd启动zk服务 (2)使用组合键Shift+Ctrl+鼠标右键,选择“在此处打开命令行容器”,在弹出的cmd窗口运行如下命令,测试zk服务是否正常:
E:\zookeeper\bin> zkCli.cmd -server localhost:2192
出现如下提示内容,表示zk服务启动正常
Connecting to localhost:2192
………
Welcome to ZooKeeper!
……….
(3)服务启动异常调试 编辑zkServer.cmd启动文件,在末尾倒数第二行添加关键字pause,排查启动异常(注意:待异常解决后,请删除pause,保存配置后双击启动)。
pause
endlocal
2.3 添加zookeeper开机自启动
一、通过服务注册zookeeper为windows服务 1、下载zookeeper服务插件commons-daemon-1.0.10-bin-windows.zip 下载地址:http://archive.apache.org/dist/commons/daemon/binaries/windows/ 将logfile "server_log.txt"修改logfile "E:\redis\log\server_log.txt" 2、解压commons-daemon-1.0.10-bin-windows.zip将prunmgr.exe 与amd64下的prunsrv.exe复制到 zookeeper的bin路径下 3、在zookeeper/bin目录下创建:zkServerStop.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
4、在bin路径下创建install.bat文件
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
4、新增ZOOKEEPER_SERVICE环境变量 变量名:ZOOKEEPER_SERVICE 变量值:zkserver如下图 5、运行bat脚本注册系统服务 在bin路径下,使用组合键Shift+Ctrl+鼠标右键,选择“在此处打开命令行容器”,在弹出的cmd窗口运行如下命令,注册系统服务:
E:\zookeeper\bin> install.bat
6、卸载服务 方法一:使用系统自带的sc命令删除
E:\zookeeper\bin> sc delete zkserver
方法二:通过删除注册表来卸载对应服务 开始→运行(Windows+R)输入regedit 然后依次打开 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services删除对应的服务 二、通过vbs脚本添加到开机自启动 1、编写启动脚本zookeeper-start.bat
%ZOOKEEPER_HOME%\bin\zkServer.cmd
2、添加开机启动,运行shell:Common Startup 打开启动文件夹 3、在弹出的文件夹里面创建zookeeper-start.vbs脚本(注意核对bat脚本的存放路径,编码使用ANSI)
createobject("wscript.shell").run "E:\\zookeeper\\zookeeper-start.bat",o
2.4 启动与停止zk服务
方法一: 启动:进入E:\zookeeper\bin,双击zkServer.cmd启动zk服务; 停止:进入E:\zookeeper\bin,双击zkServerStop.cmd启动zk服务。 方法二: 启动:双击zookeeper-start.bat脚本启动zk服务 停止:开始→运行(Windows+R)输入netstat -ano|findstr 2192
tasklist --列出所有运行的服务
tasklist /svc --查看服务service服务
taskkill /pid 2136 --将进程pid号2136杀掉
taskkill /f /pid 2136 --强制杀掉pid号2136
方法三: 启动:开始→运行(Windows+R)输入services.msc 选中Zookeeper服务,点击左侧的“启动”,并通过命令netstat -ano|findstr 2192查看服务进程
E:\zookeeper\bin> netstat -ano|findstr 2192
TCP 0.0.0.0:2192 0.0.0.0:0 LISTENING 2136
TCP [::]:2192 [::]:0 LISTENING 2136
停止:开始→运行(Windows+R)输入services.msc 选中Zookeeper服务,点击左侧的“停止” 注意:停止时报如下提示是正常,点击“确定”关闭窗口即可
3. Zookeeper加固
3.1 预防DOS***
限制zookeeper客户端的最大连接数。
zookeeper\conf\zoo.cfg
maxClientCnxns=60
3.2 修改默认2181端口
默认情况下,zookeeper默认使用2181端口,请修改默认监听端口,如本文档使用的是2192
zookeeper\conf\zoo.cfg
clientPort=2192
3.3 添加服务端口防火墙策略
打开【控制面板】>【所有控制面板项】>【Windows 防火墙】>【高级设置】 1)点击新建规则; 2)选择规则类型,点击“下一步”; 3)根据程序开放端口情况填写,如本文的redis开放7369端口,点击“下一步”; 4)默认选项,点击“下一步”; 5)配置文件,根据实际情况选项,点击“下一步”; 6)填写规则名称与规则描述,方便用户识别,点击“完成“。
3.4 添加指定IP防火墙策略
1、在3.3章节基础上操作添加指定IP防火墙策略,选中需要配置的规则,右击选择属性 2、在作用域,远程IP地址,选择添加指定IP策略 3、可以根据需要,填写某个具体IP地址,或是IP段等策略 4、应用并确定,添加指定IP防火墙策略成功
3.5 账号与认证
1、通过zkCli.cmd 进入zookeeper客户端
进入E:\zookeeper\bin
E:\zookeeper\bin> zkCli.cmd -server localhost:2192
2、使用auth方式加密,添加用户名和密码
addauth digest crm:crm#pwd
3、授予/dubbo auth权限
setAcl /dubbo auth:crm:crm#pwd:rwadc
4、查看目录加密后的权限
getAcl /dubbo
3.6 日志清理
建议设置对zookeeper日志的定期清理功能,在配置文件中清理日志策略,如下所示:
zookeeper\conf\zoo.cfg
autopurge.snapRetainCount=10
autopurge.purgeInterval=24
参数说明:
autopurge.snapRetainCount=10 //保留多少个快照
autopurge.purgeInterval=24 //多少小时清理一次