ZooKeeper 四字命令详解与配置实践
ZooKeeper 内置了一组特定的四字命令(Four Letter Words),允许用户通过简单的网络请求获取服务的运行状态和详细信息。在客户端,我们可以利用 telnet 或者 nc(netcat)工具向 ZooKeeper 的监听端口发送这些指令。
前置准备
确保本地已安装 nc 工具。CentOS 系统下可通过以下命令安装:
yum install nc -y
命令的基本格式如下:
echo [command] | nc [ip] [port]
常用四字命令一览
以下是 ZooKeeper 中常用的四字命令及其功能说明:
| 命令 | 功能描述 |
|---|---|
conf | 打印服务相关配置的详细信息(3.3.0+)。 |
cons | 列出所有连接到服务器的客户端会话详情,包括包数量、延迟等(3.3.0+)。 |
crst | 重置所有连接的连接和会话统计信息(3.3.0+)。 |
dump | 列出重要的会话和临时节点,仅在 Leader 节点有效。 |
envi | 打印服务环境的详细信息。 |
reqs | 列出当前未经处理的请求队列。 |
ruok | 测试服务是否处于正确状态,正常返回 imok,否则无响应。 |
stat | 输出关于性能和连接的客户端列表。 |
srst | 重置服务器的统计信息。 |
srvr | 列出连接服务器的详细信息(3.3.0+)。 |
wchs | 列出服务器 Watch 的详细信息(3.3.0+)。 |
wchc | 通过 Session 列出服务器 Watch 的详细信息(3.3.0+)。 |
wchp | 通过路径列出服务器 Watch 的详细信息(3.3.0+)。 |
mntr | 输出可用于检测集群健康状态的变量列表(3.4.0+)。 |
开启四字命令权限
出于安全考虑,默认情况下部分版本可能限制这些命令的使用。若需启用,可选择以下任一方式:
方式一:修改配置文件
在 zoo.cfg 文件中加入以下配置项,允许所有四字命令:
4lw.commands.whitelist=*
方式二:修改启动脚本
在 zkServer.sh 启动脚本中添加 VM 环境变量:
ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
注意:在生产环境中开放所有命令存在风险,建议根据实际需求限制白名单范围,避免敏感信息泄露。
实战示例:查看状态
使用 stat 命令可以快速查看 ZooKeeper 实例的运行状态。假设服务 IP 为 192.168.65.156,端口为 2181,执行如下命令:
echo stat | nc 192.168.65.156 2181
通过返回结果,你可以直观地看到服务器的连接数、请求处理量以及内存使用情况等关键指标。
