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     //多少小时清理一次

3.7 定期升级

4. 结束