提示 zookeeper 是 java 程序,所以安装之前需要安装 JDK,JDK 安装的教程网络上很多,本文不再赘述。注意的是系统环境变量中的 JDK 目录的值一定是:JAVA_HOME。
下载
官网地址:https://zookeeper.apache.org/
安装包下载地址:https://zookeeper.apache.org/releases.html#download
如果官网下载速度慢可以使用国内镜像下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/
笔者选择最新版本的 zookeeper 安装包:
镜像地址选择想要的版本下载:
注意下载的是.tar.gz
文件。
下载好的安装包名称为:apache-zookeeper-3.6.0-bin.tar.gz
安装
将上述安装包放到指定的文件目录,并使用解压缩工具解压这个安装包:首选解压 gz 包之后得到 tar 包,继续解压 tar包得到 apache-zookeeper-3.6.0-bin 文件目录,进入该目录得到 apache-zookeeper-3.6.0-bin 目录结构如下:
在上述的文件目录中创建 data 和 log 文件夹,并复制 conf 文件夹中的 zoo_sample.cfg 文件名称为:zoo.cfg,使用文本编辑器打开该文件,并设置数据保存目录为刚才创建的 data 文件夹目录:
启动
在安装目录的 bin 目录下,将zkServer.cmd
拖拽到 cmd 命令窗口中,回车执行即可启动 zookeeper:
启动过程没有异常信息提示,启动成功之后,光标不停闪烁:
只要这个 cmd 窗口不关闭,zookeeper 服务就会一直启用着。zookeeper 服务默认启动的是 2181 端口。
客户端图形化工具
ZooInspector
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
本博客下载地址:ZooInspector.zip
下载完后解压压缩包,在 build 文件夹目录中找到:zookeeper-dev-ZooInspector.jar。使用 java -jar 命令启动该 jar 文件:
1 | java -jar zookeeper-dev-ZooInspector.jar |
启动可视化客户端工具:
将上述客户端解压的文件目录放到一个固定位置,在 buid 文件目录中创建一个ZooInspector.cmd
文件,文件内容为:
1 | java -jar zookeeper-dev-ZooInspector.jar |
将这个ZooInspector.cmd
文件创建快捷方式到桌面,并设置个图标,双击运行即可:
zktools
本站下载地址:zktools.zip
集成 zookeeper 到 windows 服务
下载的 Zookeeper 是 .cmd 的批处理命令运行的,默认没有提供以 windows 服务的方式运行的方案,因此可以下载 prunsrv 来作为 zookeeper 的服务管理。将 zookeeper 做成 windows 服务,避免每次关闭后,再启动还需要使用 cmd。
下载 prunsrv
下载地址:http://archive.apache.org/dist/commons/daemon/binaries/windows/
目前最新版本是 1.2.2,找到对应的安装:commons-daemon-1.2.2-bin-windows.zip,
解压 zip 文件,复制 prunmgr.exe、prunsrv.exe 到 ZooKeeper 安装路径的 bin 目录下。注意:如果你的操作系统是 64 位的,则复制 amd64 目录下的 prunsrv.exe。
编写脚本
安装服务脚本
在 ZooKeeper 根目录下创建服务安装脚本:zkServiceInstall.bat
1 | @echo off |
删除服务脚本
在 ZooKeeper 根目录下创建服务卸载脚本:zkServiceRemove.bat
1 | @echo off |
停止服务脚本
在 ZooKeeper 根目录下创建服务停止脚本:zkServerStop.bat
无法使用 net stop zookeeper 命令停止服务,只能暴力杀死进程来停止服务。
1 | @echo off |
脚本使用说明
以上三个脚本必须以管理员身份运行,首先运行 zkServiceInstall.bat 文件,再 win + r 寻找 services.msc 服务,找到zookeeper
服务右击启动服务,或者使用net start zookeeper
启动服务。
停止服务,执行 zkServerStop.bat 文件。
如果想删除服务,必须先停止服务(执行 zkServerStop.bat 文件),才能删除服务,即执行 zkServiceRemove.bat 文件。
zookeeper 服务配置参数说明
zookeeper 默认参考配置文件:zoo_sample.cfg
tickTime:心跳间隔,这个时间作为 zookeeper 服务器之间或 zookeeper 服务器与客户端服务器维持心跳的时间间隔,即每隔 tickTime 时间就会发送一个心跳。
initLimit:这个配置项是用来配置 zookeeper 接受客户端(这里所说的客户端不是用户连接 zookeeper 服务器的客户端,而是 zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5 x 2000 毫秒 = 10 秒
syncLimit:这个配置项表示 Leader 与 Follower 之间发送消息,请求和相应时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2 x 2000 毫秒 = 4 秒
dataDir:zookeeper 存储数据的目录,默认情况下,zookeeper 的日志问价也会保存至该目录
clientPort:客户端连接zookeeper的端口号
server.A = B:C:D:
- A 是一个整形数字,表示服务器下标。
- B 是这个服务器的 ip 地址。
- C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口。
- D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
单机伪分布式搭建
伪分布式安装就是在同一台pc上安装,安装时使用同一个zookeeper包,多个配置文件分别配置为不同的端口。我这里配置 3 个伪服务。
复制 3 份配置文件
将 zookeeper 默认参考配置文件,即 zoo_sample.cfg 文件复制三份,并命名为:zoo1.cfg、zoo2.cfg、zoo3.cfg
创建 3 份 data 及 log 目录
在 zookeeper 根目录创建三份 data 及 log 目录,笔者为了方便管理,均创建在了Cluster
目录下:
并在 data1,data2,data3 文件夹中创建myid
文件,文件内容依次为:1,2,3
修改 3 份配置文件
分别对 zoo1.cfg、zoo2.cfg、zoo3.cfg 文件中的 data、log、端口号进行设置:
zoo1.cfg:
1 | tickTime=2000 |
zoo2.cfg:
1 | tickTime=2000 |
zoo3.cfg:
1 | tickTime=2000 |
假设把配置文件表示为:zoo{num}.cfg,server.{num}=ip/domain:Port1:Port2
其中 num:表示数字表示第几号服务器;ip/domain :是服务器域名或者 ip 地址。
Port1:表示这个服务器和集群中的 Leader 服务器交换信息的端口。
Port2:表示万一集群中的Leader服务器挂了,需要一个端口重新进行选举,选出一个新的Leader,这个端口就是用来执行选举时服务器相互通信的端口。
由于我们是伪集群,所以 ip 或者域名是一样的,所以要分配不同的端口号。
复制 3 份启用服务脚本
将默认的启动文件复制三份,并命名为:zkServer1.cmd、zkServer2.cmd、zkServer3.cmd
分别修改上述启动脚本,设置成上述的启动配置脚本:
zkServer1.cmd:
1 | @echo off |
zkServer2.cmd:
1 | @echo off |
zkServer3.cmd:
1 | @echo off |