案例源码gitee地址:https://gitee.com/BanSheng/zookeeper-demo/tree/master/zookeeperdemo
JDK网盘地址
链接:https://pan.baidu.com/s/1tbSJgcAiWBTL1BfZFaOQ-w 提取码:nu3f
Zookeeper网盘地址
链接:https://pan.baidu.com/s/1OAZEedqkwsjqx4ufgFaDWg 提取码:4680
官方资源包可在 zookeeper.apache.com 站点中下载。最新发布版本为:3.6.0。
配置环境变量
export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATHZookeeper 在启动时默认的去 conf 目录下查找一个名称为 zoo.cfg 的配置文件。在 zookeeper 应用目录中有子目录 conf。其中有配置文件模板:zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg。zookeeper 应用中的配置文件为 conf/zoo.cfg。
修改配置文件 zoo.cfg - 设置数据缓存路径
默认加载配置文件:./zkServer.sh start:默认的会去 conf 目录下加载 zoo.cfg 配置文件。
指定加载配置文件:./zkServer.sh start 配置文件的路径。
./zkServer.sh stop
./zkServer.sh status
bin/zkCli.sh
默认连接地址为本机地址,默认连接端口为 2181
bin/zkCli.sh -server ip:port
连接指定 IP 地址与端口
Zookeeper 集群中的角色主要有以下三类
使用 3 个 Zookeeper 应用搭建一个伪集群。应用部署位置是:192.168.233.130。客户端监听端口分别为:2181、2182、2183。投票选举端口分别为 2881/3881、2882/3882、2883/3883。
tar -zxf zookeeper-3.6.0.tar.gz 将解压后的 Zookeeper 应用目录重命名,便于管理 mv zookeeper-3.6.0 zookeeper01
在 zookeeper01 应用目录中,创建 data 目录,用于缓存应用运行数据
cd zookeeper01 mkdir data复制两份 Zookeeper 应用。用于模拟集群中的 3 个节点。
cp -r zookeeper01 zookeeper02 cp -r zookeeper01 zookeeper03在 zookeeper 应用目录中有子目录 conf。其中有配置文件模板:zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg
zookeeper 应用中的配置文件为 conf/zoo.cfg。
dataDir 参数值为应用运行缓存数据保存目录。
在 Zookeeper 集群中,每个节点需要一个唯一标识。这个唯一标识要求是自然数。且唯一标识保存位置是:数据缓存目录(dataDir=/usr/local/zookeeper/data)的 myid 文件中。其中“数据缓存目录”为配置文件 zoo.cfg 中的配置参数
在 data 目录中创建文件 myid : touch myid
为应用提供唯一标识。本环境中使用 1、2、3 作为每个节点的唯一标识。
vi myid
简化方式为: echo [唯一标识] >> myid。 echo 命令为回声命令,系统会将命令发送的数据返回。 '>>'为定位,代表系统回声数据指定发送到什么位置。 此命令代表系统回声数据发送到 myid 文件中。 如果没有文件则创建文件。
vim zoo.cfg
clientPort=2181 #服务端口根据应用做对应修改,zk01-2181,zk02-2182,zk03-2183 server.1=192.168.233.130:2881:3881 server.2=192.168.233.130:2882:3882 server.3=192.168.233.130:2883:3883在 Linux 中可以使用 chmod 命令为文件授权。
chmod 777 文件名
777 表示为文件分配可读,可写,可执行权限。
2.3.1 启动 Zookeeper 集群脚本
zookeeper01/bin/zkServer.sh start zookeeper02/bin/zkServer.sh start zookeeper03/bin/zkServer.sh start2.3.2 关闭 Zookeeper 集群脚本
zookeeper01/bin/zkServer.sh stop zookeeper02/bin/zkServer.sh stop zookeeper03/bin/zkServer.sh stop可以使用任何节点中的客户端工具连接集群中的任何节点。
./zkCli.sh -server 192.168.233.130:2183
ls /path
使用 ls 命令查看 zookeeper 中的内容。在 ZooKeeper 控制台客户端中,没有默认列表功能,必须指定要列表资源的位置。 如: ls / 或者 ls /path
create [-e] [-s] /path [data]
使用 create 命令创建一个新的 Znode。create [-e] [-s] path data - 创建节点,如: create /test 123 创建一个/test 节点,节点携带数据信息 123。 create -e /test 123 创建一个临时节点/test,携带数据为 123,临时节点只在当前会话生命周期中有效,会话结束节点自动删除。create -s /test 123 创建一个顺序节点/test,携带数据 123,创建的顺序节点由 ZooKeeper 自动为节点增加后缀信息,如-/test00000001 等。-e 和-s 参数可以联合使用。
get [-s] /path
get 命令获取 Znode 中的数据。
get -s /path
-s 查看 Znode 详细信息
oldlu:存放的数据
cZxid:创建时 zxid(znode 每次改变时递增的事务 id)
ctime:创建时间戳
mZxid:最近一次更近的 zxid
mtime:最近一次更新的时间戳
pZxid:子节点的 zxid
cversion:子节点更新次数
dataversion:节点数据更新次数
aclVersion:节点 ACL(授权信息)的更新次数
ephemeralOwner:如果该节点为 ephemeral 节点(临时,生命周期与 session 一样),ephemeralOwner 值表示与该节点绑定的 session id. 如果该节点不是ephemeral 节点, ephemeralOwner 值为 0.
dataLength:节点数据字节数
numChildren:子节点数量
set /path [data]
添加或修改 Znode 中的值
delete /path
删除 Znode。
该依赖为基于 Java 语言连接 Zookeeper 的客户端工具
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version> </dependency>案例源码gitee地址:https://gitee.com/BanSheng/zookeeper-demo/tree/master/zookeeperdemo