11.2.5 集群状态检查与基础验收

集群启动完成后需进行状态检查与基础验收,确保节点角色正确、连接正常、数据目录与日志可用,避免后续业务接入出现一致性或可用性问题。本节给出原理草图、完整可执行命令示例、常见问题排查与练习。

文章图片

基础检查清单与命令示例(按顺序执行):

1) 进程与端口检查

# 查看 Java 进程(预期:包含 QuorumPeerMain)
ps -ef | grep -v grep | grep QuorumPeerMain

# 端口监听(预期:2181、2888、3888 处于 LISTEN)
ss -lntp | egrep '2181|2888|3888'

2) 节点角色与健康状态

# 角色检查(预期:Mode: leader/follower/observer)
echo stat | nc 192.168.10.11 2181 | egrep 'Mode|Zxid|Node'

# 健康检查(预期:imok)
echo ruok | nc 192.168.10.12 2181

3) 集群成员与指标(四字命令)

# 监控指标(预期:zk_server_state=leader/follower)
echo mntr | nc 192.168.10.13 2181 | egrep 'zk_server_state|zk_synced_followers|zk_outstanding_requests'

4) 配置一致性与 myid 匹配

# 比对 server.X 与 myid(在每台节点执行)
grep -E '^server\.' /opt/zookeeper/conf/zoo.cfg
cat /data/zkdata/myid

# 关键参数一致性(tickTime/initLimit/syncLimit/dataDir/dataLogDir)
egrep 'tickTime|initLimit|syncLimit|dataDir|dataLogDir' /opt/zookeeper/conf/zoo.cfg

5) 存储与日志检查

# dataDir 快照目录(预期:version-2 存在)
ls -l /data/zkdata
ls -l /data/zkdata/version-2

# dataLogDir 事务日志(预期:log.* 文件持续增长)
ls -l /data/zklog | tail

# 权限与属主(预期:zookeeper:zookeeper)
ls -ld /data/zkdata /data/zklog

6) 基础读写验收(客户端)

# 连接任一节点(预期:WatchedEvent 日志输出)
/opt/zookeeper/bin/zkCli.sh -server 192.168.10.11:2181 <<'EOF'
create /zk_check ok
get /zk_check
delete /zk_check
quit
EOF

命令解释要点:
- stat:查看节点模式与连接信息,确认 leader/follower 是否正确。
- ruok:快速健康检查,返回 imok 代表服务可用。
- mntr:返回关键指标,便于判断同步情况与请求积压。
- zkCli.sh:基础读写验证,证明客户端连接与数据一致性正常。

基础验收通过标准:
- 所有节点响应 ruok,且 stat 显示 1 个 leader,其余 follower/observer。
- mntr 显示 zk_server_state 合法,zk_outstanding_requests 无异常激增。
- dataDirdataLogDir 生成快照与日志文件,权限正确。
- 任意节点可读写,创建/读取/删除节点无错误。

常见问题与排错示例(含命令):

  • 现象:ruok 无响应或超时
    排查:
# 端口占用与防火墙
ss -lntp | grep 2181
iptables -L -n | grep 2181
# 进程与日志
ps -ef | grep QuorumPeerMain
tail -n 50 /opt/zookeeper/logs/zookeeper.out
  • 现象:集群反复选举、无 leader
    排查:
# 时钟同步
timedatectl status
# myid 与 server.X 不匹配
cat /data/zkdata/myid
grep '^server\.' /opt/zookeeper/conf/zoo.cfg
# 网络连通
nc -vz 192.168.10.11 2888
nc -vz 192.168.10.11 3888
  • 现象:日志提示 No space left on device
    排查:
df -h /data/zkdata /data/zklog
du -sh /data/zkdata/* /data/zklog/* | sort -h | tail
  • 现象:启动失败提示无法写入快照
    排查:
# 权限修复
chown -R zookeeper:zookeeper /data/zkdata /data/zklog
chmod -R 700 /data/zkdata /data/zklog

基础验收练习:
1) 在 3 节点集群中,断开任意 1 个 follower(停止进程),验证剩余节点 ruok 仍返回 imok,并记录 stat 变化。
2) 修改单节点的 myid 为错误值,重启并观察日志关键错误,再恢复正确值。
3) 使用 zkCli.sh 创建 10 个测试节点并批量删除,验证读写延迟与日志增长情况。