文章目录
以下内容以 apache-zookeeper-3.6.3 版本为基准
1.服务端命令
# 启动
sh bin/zkServer.sh start
# 停止
sh bin/zkServer.sh stop
# 重启
sh bin/zkServer.sh restart
# 查看状态
sh bin/zkServer.sh status
2.客户端命令
2.1 启动客户端【zkCli.cmd/zkCli.sh】
命令结构:sh zkCli.sh [-waitforconnection] [-timeout ms] [-client-configuration /path/client.properties] [-server host:port]
功能说明:启动客户端
参数 | 说明 |
---|---|
-waitforconnection | 网络连通成功后,执行连接命令。如果无法连通,退出。 |
-timeout ms | 超时重连,单位:毫秒 |
–client-configuration /path/client.properties | 指定客户端配置属性文件 |
-server host:port | 设置主机和端口。默认:localhost:2181 |
# windows 系统情况下可以通过 git 命令控制器执行
sh zkCli.sh
# windows 系统通过 cmd 控制器输入命令
./zkCli.sh
2.2 会话命令【connect/close】
命令结构:connect [host:port]
功能说明:连接 Zookeeper 服务端
参数 | 说明 |
---|---|
host:port | 服务端IP和端口。默认:localhost:2181 |
命令结构:close
功能说明:断开客户端或会话
2.3 工具命令【quit/help/history】
命令 | 参数 | 说明 |
---|---|---|
quit | 退出客户端 | |
h/help | 帮助命令,查看命令集 | |
history | 查看历史命令 | |
version | 查看 Zookeeper 客户端的版本 | |
redo | history_index(0~n) | 重新执行历史命令,根据下标执行 |
sync | path | 在leader和follower之间同步一个节点的数据(异步同步) |
printwatches | on/off | 打印监控器开关 |
2.4 节点命令
2.4.1 查看节点【ls/stat/get/getAllChildrenNumber/getEphemerals】
命令结构:ls [-s] [-w] [-R] path
功能说明:列出指定路径的子节点
参数 | 说明 |
---|---|
-s | 查看节点状态 |
-w | 设置一次性监控器(子节点改变的时候触发)。printwatches 为 on 时打印监听器信息。 |
-R | 递归查看子节点 |
path | 指定路径 |
命令结构:stat [-w] path
功能说明:查看节点的状态/元数据
参数 | 说明 |
---|---|
-w | 设置一次性监控器(节点改变的时候触发)。printwatches 为 on 时打印监听器信息。 |
path | 指定路径 |
命令结构:get [-s] [-w] path
功能说明:获取指定路径的数据
参数 | 说明 |
---|---|
-s | 显示节点状态 |
-w | 设置一次性监控器(节点数据改变的时候触发)。printwatches 为 on 时打印监听器信息。 |
path | 指定路径 |
命令结构:getAllChildrenNumber path
功能说明:获取路径下的所有子节点数量
参数 | 说明 |
---|---|
path | 指定路径 |
命令结构:getEphemerals
功能说明:获取当前会话创建的临时节点
2.4.2 创建节点【create】
命令结构:create [-s] [-e] [-c] [-t ms] path [data] [acl]
功能说明:创建节点(持久/临时、顺序)
参数 | 说明 |
---|---|
-s | 顺序节点,默认:非顺序 |
-e | 临时节点,默认:持久节点 |
-c | 容器节点,默认:非容器。容器中的子节点全部删除后,该节点自动被清除。 |
-t ms | 过期节点,单位:毫秒。节点超过指定时间后被自动清除。 前提设置系统参数 zookeeper.extendedTypesEnabled=true |
path | 指定路径 |
data | 数据 |
acl | 访问权限,默认world |
2.4.3 删除节点【delete/deleteall】
命令结构:delete [-v version] path
功能说明:删除指定路径的节点
参数 | 说明 |
---|---|
-v version | cversion 版本号,如果版本错误,命令执行失败 |
path | 指定路径 |
命令结构:deleteall path [-b batch size]
功能说明:删除指定路径的所有节点
参数 | 说明 |
---|---|
path | 节点路径 |
-b batch_size | 分批删除的个数 |
2.4.4 修改节点【set】
命令结构:set [-s] [-v version] path data
功能说明:设置/更新指定路径节点的数据
参数 | 说明 |
---|---|
-s | 显示当前节点的数据 |
-v version | dataVersion 版本号,如果版本错误,命令执行失败 |
path | 指定路径 |
data | 数据 |
2.4.5 添加监控器【addWatch】
命令结构:addWatch [-m mode] path
功能说明:设置指定节点的监控器(持久)
参数 | 说明 |
---|---|
-m mode | PERSISTENT(默认)、 PERSISTENT_RECURSIVE |
path | 指定路径 |
2.4.6 移除监控器【removewatches】
命令结构:removewatches path [-c|-d|-a] [-l]
功能说明:移除指定节点的监控器
参数 | 说明 |
---|---|
path | 指定路径 |
-c | |
-d | |
-a | |
-l |
2.4.7 设置配额【setquota】
命令结构:setquota -n|-b val path
功能说明:设置指定路径的配额。如果超出了配置限制,ZooKeeper将会在 log(*.out)日志中打印 WARN 日志。如果超出配额限制,并不会停止行为操作。
参数 | 说明 |
---|---|
-n number | 命名空间,限制子节点数量 |
-b size | 字节,限制节点字节数 |
path | 指定路径 |
2.4.8 查询配额【listquota】
命令结构:listquota path
功能说明:查看指定路径的配额
参数 | 说明 |
---|---|
path | 指定路径 |
2.4.9 删除配额【delquota】
命令结构:delquota [-n|-b] path
功能说明:查看指定路径的配额
参数 | 说明 |
---|---|
-n | 命名空间,子节点配额 |
-b | 字节,节点字节数 |
path | 指定路径 |
2.5 权限命令
2.5.1 添加授权用户【addauth】
命令结构:addauth scheme auth
功能说明:为ACL添加授权用户
参数 | 说明 |
---|---|
scheme | digest |
auth |
2.5.2 查看 ACL【getAcl】
命令结构:getAcl [-s] path
功能说明:获取指定路径的ACL权限
参数 | 说明 |
---|---|
-s | 显示节点的状态 |
path | 指定路径 |
2.5.3 设置 ACL【setAcl】
命令结构:setAcl [-s] [-v version] [-R] path acl
功能说明:设置节点的Acl权限
参数 | 说明 |
---|---|
-s | 查看节点状态 |
-v version | cversion 版本号,如果版本错误,命令执行失败 |
-R | 递归设置子节点 |
path | 指定路径 |
acl | 访问权限,默认world |
2.6 集群配置命令
2.6.1 查看配置【config】
命令结构:config [-c] [-w] [-s]
功能说明:显示集群成员的配置
参数 | 说明 |
---|---|
-c | |
-w | |
-s |
2.6.2 重置配置【reconfig】
注意
(1)zoo.cfg 添加配置 reconfigEnabled=true
(2)请添加超级用户或 skipAcl,否则会显示权限不足。例如:addauth digest zookeeper:admin
命令结构:reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,…]]] | [-add serverId=host:port1:port2;port3[,…]] [-remove serverId[,…]*]
功能说明:在运行时期间更改集成的成员关系。
参数 | 说明 |
---|---|
-s | |
-v version | |
-file path | |
-members serverID=host:port1:port2;port3[,…]* | |
-add serverId=host:port1:port2;port3[,…]* | |
-remove serverId[,…]* |
3.四字命令
通过 telnet 或 nc 向 ZooKeeper 提交相应的命令
# 查看哪个节点被选择作为follower或者leader
echo stat|nc 127.0.0.1 2181
# 测试是否启动了该Server,若回复imok表示已经启动
echo ruok|nc 127.0.0.1 2181
# 列出未经处理的会话和临时节点
echo dump|nc 127.0.0.1 2181
# 关掉server
echo kill|nc 127.0.0.1 2181
# 输出相关服务配置的详细信息
echo conf|nc 127.0.0.1 2181
# 列出所有连接到服务器的客户端的完全的连接/会话的详细信息
echo cons|nc 127.0.0.1 2181
# 输出关于服务环境的详细信息
echo envi|nc 127.0.0.1 2181
# 列出未经处理的请求
echo reqs|nc 127.0.0.1 2181
# 列出服务器 watch 的详细信息
echo wchs|nc 127.0.0.1 2181
# 通过 session 列出服务器 watch 的详细信息
echo wchc|nc 127.0.0.1 2181
# 通过路径列出服务器 watch 的详细信息
echo wchp|nc 127.0.0.1 2181
4.参考
5.FAQ
如何配置系统参数
答:需要修改 zkServer.sh 文件。例如,添加 参数 zookeeper.extendedTypesEnabled=true
nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
"-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
"-Dzookeeper.extendedTypesEnabled=true" \
-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError='kill -9 %p' \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &