客户端访问
命令行客户端访问 ZooKeeper
安装zookeeper的bin里面,有命令行工具
[root@ubuntu2004 ~]#ls /usr/local/zookeeper/bin/zkCli.sh
/usr/local/zookeeper/bin/zkCli.sh
里面存的脚本是由java运行起来的
#可连接至zookeeper 集群中的任意一台zookeeper 节点进行以下操作,zkCli.sh 默认连接本机
连接本机
[root@ubuntu2004 ~]#zkCli.sh
[zk: localhost:2181(CONNECTED) 0] #两个tab键可以列出支持的命令
addWatch addauth close config connect create delete
deleteall delquota get getAcl getAllChildrenNumber getEphemerals history listquota ls printwatches quit reconfig redo removewatches set setAcl setquota stat sync version whoami
创建节点
[zk: localhost:2181(CONNECTED) 3] create /app1
Created /app1
连接远程主机
zkCli.sh -server 10.0.0.103:2181
nc访问zookeeper
ZooKeeper支持某些特定的四字命令字母与其的交互.它们大多是查询命令,用来获取 ZooKeeper服务 的当前状态及相关信息.用户在客户端可以通过 netcat 或telnet向zookeeper发送下面命令
常见命令列表
conf #输出相关服务配置的详细信息
cons #列出所有连接到服务器的客户端的完全的连接/会话的详细信息
envi #输出关于服务环境的详细信息
dump #列出未经处理的会话和临时节点
stat #查看哪个节点被选择作为Follower或者Leader
ruok #测试是否启动了该Server,若回复imok表示已经启动
mntr #输出一些运行时信息 reqs #列出未经处理的请求
wchs #列出服务器watch的简要信息
wchc #通过session列出服务器watch的详细信息
wchp #通过路径列出服务器watch的详细信息
srvr #输出服务的所有信息
srst #重置服务器统计信息
kill #关掉Server
isro #查看该服务的节点权限信息
命令的安全限制
#默认情况下,这些4字命令有可能会被拒绝,发送如下报错
xxx is not executed because it is not in the whitelist.
解决办法:在 zoo.cfg文件中添加如下配置,如果是集群需要在所有节点上添加下面配置
[root@ubuntu2004 ~]#vim /usr/local/zookeeper/conf/zoo.cfg
4lw.commands.whitelist=*
[root@ubuntu2004 ~]#systemctl restart zookeeper.service
[root@ubuntu2004 ~]#echo stat |nc 127.0.0.1 2181
Zookeeper version: 3.8.0-5a02a05eddb59aee6ac762f7ea82e92a68eb9c0f, built on 2022-02-25 08:49 UTC
Clients:
/127.0.0.1:36300[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x7
Mode: standalone
Node count: 6
#也支持telnet,但不能用 | telnet形式
图形化客户端zooinspector
githab链接
https://github.com/zzhang5/zooinspector
https://gitee.com/lbtooth/zooinspector.git
#https://github.com/zzhang5/zooinspector
Build
$git clone https://github.com/zzhang5/zooinspector.git
$cd zooinspector/
$mvn clean package -Dmaven.test.skip=true Run $chmod +x target/zooinspector-pkg/bin/zooinspector.sh
$target/zooinspector-pkg/bin/zooinspector.sh
范例
# github
[root@zookeeper-node1 ~]#git clone https://github.com/zzhang5/zooinspector.git
#国内镜像
[root@zookeeper-node1 ~]#git clone https://gitee.com/lbtooth/zooinspector.git
[root@ubuntu2004 ~]#cd zooinspector/
[root@ubuntu2004 zooinspector]#apt install maven -y
java编译安装zooinspector,ubuntu不能编译,可用rocky编译好,把编译好的包给ubuntu用
[root@ubuntu2004 opt]#ls
zooinspector-1.0-SNAPSHOT-pkg.tar
[root@ubuntu2004 opt]#tar xf zooinspector-1.0-SNAPSHOT-pkg.tar
[root@ubuntu2004 opt]#ls
zooinspector-1.0-SNAPSHOT zooinspector-1.0-SNAPSHOT-pkg.tar
[root@ubuntu2004 opt]#cd zooinspector-1.0-SNAPSHOT/
[root@ubuntu2004 zooinspector-1.0-SNAPSHOT]#ls
bin conf repo
[root@ubuntu2004 zooinspector-1.0-SNAPSHOT]#cd bin/
[root@ubuntu2004 bin]#chmod +x *
[root@ubuntu2004 bin]#ls
zooinspector.bat zooinspector.sh
打开图形页面,左上角连接zookeeper
[root@ubuntu2004 bin]#./zooinspector.sh
Python访问zookeeper
apt -y install python3 python3-kazoo
cat zookeepe_test.py
#!/usr/bin/python3
from kazoo.client import KazooClient
zk = KazooClient(hosts='10.0.0.105:2181')
zk.start()
# 创建节点:makepath 设置为 True ,父节点不存在则创建,其他参数不填均为默认
zk.create('/zkapp/test',b'this is a test',makepath=True)
#查看指定数据
data=zk.get('/zkapp/test')
print(data)
#查看所有数据
all_data=zk.get_children('/')
print(all_data)
# 操作完后关闭zk连接
zk.stop()
[root@ubuntu2004 zooinspector-1.0-SNAPSHOT]#python3 zookeepe_test.py
(b'this is a test', ZnodeStat(czxid=11, mzxid=11, ctime=1667572293170, mtime=1667572293170, version=0, cversion=0, aversion=0, ephemeralOwner=0, dataLength=14, numChildren=0, pzxid=11))
['zkapp', 'zookeeper', 'app1']