ZooKeeper 是作为集群使用的工具。所谓分布式协调主要是来解决分布式系统中多个进程之间的同步限制,防止出现脏读,例如我们常说的分布式锁。
其官网是:https://zookeeper.apache.org/
我这里使用的环境是
win server 2012r2 x64
ZooKeeper 3.7.0
JDK 8
----------Zookeeper集群搭建需要最少3台机器,单机3个应用
需要关闭防火墙。通过控制面板--》系统与安全--》Windows防火墙--》启动或关闭Windows防火墙
我这里使用单机部署,所以要复制出3个 ZooKeeper文件夹内容一样。下面配置
新建文件夹 D:/zookeeper1/date
找到
D:\zookeeper1\conf
复制 zoo_sample.cfg 文件并粘贴在同一目录下,将文件名称修改为 zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=D:/zookeeper1/date
dataLogDir=D:/zookeeper1/log
# the port at which the clients will connect
admin.serverPort=9090
# clientPort=2181
quorumListenOnAllIPs=true
server.1=10.202.80.180:2888:3888;2181
server.2=10.202.80.181:2888:3888;2181
server.3=10.202.80.182:2888:3888;2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
说明:
1. 添加dataDir地址:指定Zookeeper 保存数据的目录
2. 添加dataLogDir地址:指定事务日志存储路径,不加默认在dataDir目录下
3. 设置clientPort端口,默认为2181,3.7以后的版本注释掉该项,在集群地址中配置clinetport端口,使用容器
4. 设置admin.serverPort启动端口,启动端口默认为8080,不修改容易造成端口冲突
5. quorumListenOnAllIPs=true #必须添加,防止本机IP 不是本机网卡
6. 设置集群地址:
server.1=10.202.80.180:2888:3888;2181 --第一个节点地址
server.2=10.202.80.181:2888:3888;2181 --第二个节点地址
server.3=10.202.80.182:2888:3888;2181 --第三个节点地址
说明:
server.A=B:C:D;E A是一个数字,表示这个是第几号服务器由myid文件选择;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口,E为clientPort端口
7. 创建多个节点集群时,在dataDir=D:\ZooKeeper1\date目录下必须创建myid文件,myid文件用于zookeeper验证server序号,myid文件只有一行,并且为当前server的序号。
Server为1,myid记录1
D:\ZooKeeper2\date 里面的myid 2
D:\ZooKeeper3\date 里面的myid 3
进入…\zookeeper1\bin目录

双击ZkServer.cmd启动服务脚本,启动顺序:server.1>server.2>server.3
若脚本启动报错:JAVA_HOME is not set
则修改启动cmd内容加入JAVA环境变量

也可在系统环境变量里面配置JAVA_HOME
cmd 输入 echo %JAVA_HOME%
就可以看到配置java的目录。
3个server启动后,可以使用客户端连接试试
使用客户端连接集群:
命令:
zkCli.cmd -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
成功连接截图


单节点连接。
#登录node3节点
bin/zkCli.sh -server 127.0.0.1:2183
或者#登录node1节点
bin/zkCli.sh -server 127.0.0.1:2181
对于集群测试,还可以在node1上新建目录,然后在node3上检查是否存在该目录
cmd 命令里面:
....] create /test
..../bin/zkCli.sh -server 127.0.0.1:2183
