Zookeeper运维秘籍:四字命令基础、详解及业务应用全解析

文章目录

ZooKeeper,作为一款分布式协调服务,提供了丰富的四字命令(也称为四字短语)来与其进行交互。这些命令大多用于查询ZooKeeper服务的当前状态、环境变量以及临时会话等信息,是运维人员监控ZooKeeper集群状态的重要工具。在客户端,用户可以通过 nc(Netcat)命令向ZooKeeper提交相应的四字命令。

一、四字命令基础

要使用ZooKeeper的四字命令,首先需要确保系统中已安装Netcat工具。四字命令的基本格式如下:

bash 复制代码
echo [command] | nc [ip] [port]

其中,[command]为具体的四字命令,[ip]为ZooKeeper服务器的IP地址,[port]为ZooKeeper服务的端口号(默认为2181)。

二、四字命令详解

  1. conf:打印ZooKeeper的配置信息,包括端口号、数据目录、日志目录、心跳间隔、最大连接数、会话超时时间等。

  2. cons:列出所有连接到当前ZooKeeper服务器的客户端的详细信息,包括接收/发送的包数量、会话ID、操作延迟、最后操作时间等。

  3. crst:重置所有连接的连接和会话统计信息。

  4. dump:列出重要的会话和临时节点信息,该命令仅在Leader节点上有效。

  5. envi:打印ZooKeeper服务的环境配置信息,如版本、主机信息、Java版本、运行环境等。

  6. reqs:列出未经处理的请求。

  7. ruok:测试ZooKeeper服务是否处于正常状态,如果正常则返回"imok"。

  8. stat:输出ZooKeeper的性能信息和连接的客户端列表。

  9. srst:重置ZooKeeper服务器的统计信息。

  10. srvr:列出ZooKeeper服务器的详细信息。

  11. wchs:列出当前服务器管理的Watcher信息。

  12. wchc:通过会话列出Watcher信息,输出与Watcher相关的会话列表。

  13. wchp:通过路径列出Watcher信息,输出与会话相关的路径。

  14. mntr :输出可用于检测集群健康状态的变量列表,比stat命令更为详尽。

三、四字命令的开启与配置

$HOME/Zoo.cfg

以上*为开启所有四字命令,也可以指定四字命令,指定几个开启

四、结合业务解读四字命令

conf

打印出配置的详细信息。比如端口、zookeeper数据及日志配置路径、最大连接数,session超时时间、serverId等

属性 含义
clientPort 客户端端口号
dataDir 数据快照文件目录 默认情况下100000次事务操作生成一次快照
dataLogDir 事物日志文件目录,生产环境中放在独立的磁盘上
tickTime 服务器之间或客户端与服务器之间维持心跳的时间间隔(以毫秒为单位)
maxClientCnxns 最大连接数
minSessionTimeout 最小session超时 minSessionTimeout=tickTime* 2
maxSessionTimeout maxSessionTimeout 最大session超时 maxSessionTimeout=tickTime * 20
serverId 服务器编号
initLimit 集群中的follower服务器(F)与leader服务器(L)之间 初始连接时能容忍的最多心跳数
syncLimit 集群中的follower服务器(F)与leader服务器(L)之间 请求和应答之间能容忍的最多心跳数
electionAlg 0:基于UDP的LeaderElection 1:基于UDP的 FastLeaderElection 2:基于UDP和认证的FastLeaderElection
electionPort 选举端口
quorumPort 数据通信端口
peerType 是否为观察者 1为观察者

cons

echo cons|nc localhost 2181 输出当前服务器所有客户端连接的详细信息,

看下带业务情况:

属性说明

ip :ip地址
port :端口号
queued :等待被处理的请求数,请求缓存在队列中
received :收到的包数
sent :发送的包数
sid :会话id
lop :最后的操作 GETD-读取数据 DELE-删除数据 CREA-创建数据
est :连接时间戳
to :超时时间
lcxid :当前会话的操作id
lzxid :最大事务id
lresp :最后响应时间戳
llat :最后/最新 延时
minlat :最小延时
maxlat :最大延时
avglat:平均延时

envi命令

envi:输出关于服务器的环境配置信息

shell终端输入:echo envi| nc localhost 2181

说明:

属性 含义
zookeeper.version 版本
host.name host 信息
java.version java 版本
java.vendor 供应商
java.home 运行环境所在目录
java.class.path classpath
java.library.path 第三方库指定非java类包的位置(如:dll,so)
java.io.tmpdir 默认的临时文件路径
java.compiler JIT 编译器的名称
os.name Linux
os.arch amd64
os.version 3.10.0-514.el7.x86_64
user.name zookeeper
user.home /root
user.dir /sys/fs/cgroup
Os.memory.free 空间内存
Os.memory.max 最大空间
Os.memory.total 最大内存

Stat命令

stat:输出服务器的详细信息与srvr相似,但是多了每个连接的会话信息

shell终端输入:echo stat| nc localhost 2181

说明:

Zookeeper version 版本

Latency min/avg/max 延时

Received 收包

Sent 发包

Connections 连接数

Outstanding 堆积数

Zxid 最大事物id

Mode 服务器角色

Node count 节点数

SRVR:和stat功能一致,但不会输出客户端连接情况

MNTR命令

mntr :列出服务器的健康状态,比stat更为详尽的服务器信息,截取部分信息如下:

zk_version 版本

zk_avg_latency 平均延时

zk_max_latency 最大延时

zk_min_latency 最小延时

zk_packets_received 收包数

zk_packets_sent 发包数

zk_num_alive_connections 连接数

zk_outstanding_requests 堆积请求数

zk_server_state leader/follower 状态

zk_znode_count znode数量

zk_watch_count watch数量

zk_ephemerals_count 临时节点(znode)

zk_approximate_data_size 数据大小

zk_open_file_descriptor_count 打开的文件描述符数量

zk_max_file_descriptor_count 最大文件描述符数量

ruok命令

ruok:测试服务是否处于正确运行状态

shell终端输入:echo ruok| nc localhost 2181

dump命令

dump:列出未经处理的会话和临时节点

shell终端输入:echo dump| nc localhost 2181

wchs

echo wchs|nc localhost 2181,输出当前服务器管理的Watcher信息

wchp

echo wchp|nc localhost 2181,与wchs类似,但以节点路径为单位对Watcher信息进行归组;

五、实战应用

在实际应用中,运维人员可以通过定期执行这些四字命令来监控ZooKeeper集群的状态和性能。例如,可以使用mntr命令定期获取集群的健康状态信息,并使用statsrvr命令来评估集群的性能。同时,在出现故障时,可以使用consenvidump等命令来排查问题。

总之,ZooKeeper的四字命令是运维人员监控和调优ZooKeeper集群的重要工具。通过熟练掌握这些命令,运维人员可以更好地了解ZooKeeper的运行状态和性能,及时发现并解决潜在问题。

相关推荐
大明者省10 小时前
四大模态大模型训练体系全解析(架构+范式+分布式+算力成本·)
笔记·分布式·架构
格子软件11 小时前
2026年分布式GEO代理架构:多租户动态数据源隔离与流控源码解构
java·vue.js·人工智能·分布式·架构·vue·geo
nbsaas-boot11 小时前
微服务架构下的分布式事务解决方案深度对比与实战选型
分布式·微服务·架构
livemetee12 小时前
关于【Kafka高可用配置】
分布式·kafka
TTBIGDATA12 小时前
【Ambari Plus】11.Kafka 安装
大数据·hadoop·分布式·kafka·ambari·hdp·ambari plus
李昊哲小课12 小时前
Ubuntu26.04 搭建 Hadoop3.5.0 完全分布式
大数据·hadoop·分布式·ubuntu·hdfs·mapreduce
newbe3652414 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
清心歌1 天前
Seata AT 模式简单学习及总结
分布式·seata
rebibabo1 天前
Java基础(番外) | Kafka 入门:分区、副本与消费者组原理
java·分布式·kafka·学习笔记·副本·分区·异步日志
swg3213211 天前
Kafka基于ZK和KRaft的设计原理与差异
分布式·kafka