如何从命令提示符检查 ZooKeeper 是否为 运行 或已启动?

How to check if ZooKeeper is running or up from command prompt?

我探索了一些设置 kafka 的选项,我知道 Zookeeper 必须启动并且 运行 启动 kafka。

我想知道如何找到下面的内容。

1) 我的 zookeeper 实例的主机名和端口---我检查了 zoo.cfg 我只能找到 ClientPort 而不是主机名,主机名会是我盒子的主机名吗??

2) 检查 ZooKeeper 是否已启动并且 运行---我尝试执行 ps -ef | grep "zoo" 我找不到任何东西。可能是我搜索的关键词不对??

任何帮助将不胜感激?

Zookeeper 只是一个 Java 进程,当您启动 Zookeeper 实例时,它会运行 org.apache.zookeeper.server.quorum.QuorumPeerMain class。所以你可以像这样检查 运行 Zookeeper:

jps -l | grep zookeeper

甚至像这样:

jps | grep Quorum

更新:

对此:will hostname be the hostname of my box?? - 答案是肯定的。

转到 Zookeeper 的 bin 目录并键入

./zkServer.sh status

如需了解更多信息,请阅读以下 link:

http://www.ibm.com/developerworks/library/bd-zookeeper/

希望对您有所帮助。

我做了一些测试:

当 运行:

$ /usr/lib/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/lib/zookeeper/bin/../conf/zoo.cfg
Mode: follower

停止时:

$ zkServer status                                                                                                                                
JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo.cfg
Error contacting service. It is probably not running.

我不在同一台机器上 运行,但你明白了。

我使用:

  jps

根据您的安装,运行 Zookeeper 看起来像

  HQuorumPeer

或者……名字里有动物园管理员。

另一种方法是使用 4 个字母的命令来验证 zookeeper 服务是否健康

echo stat | nc <zookeeper ip> 2181
echo mntr | nc <zookeeper ip> 2181
echo isro  | nc <zookeeper ip> 2181

有关下面文档 link 的更多详细信息 https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands

检查 Zookeeper 是否可访问。一种方法是简单地远程登录到正确的端口并执行统计命令。

root@host:~# telnet localhost 2181
Trying 127.0.0.1...
Connected to myhost.
Escape character is '^]'.
stats
Zookeeper version: 3.4.3-cdh4.0.1--1, built on 06/28/2012 23:59 GMT
Clients:

Latency min/avg/max: 0/0/677
Received: 4684478
Sent: 4687034
Outstanding: 0
Zxid: 0xb00187dd0
Mode: leader
Node count: 127182
Connection closed by foreign host.
echo stat | nc localhost 2181 | grep Mode
echo srvr | nc localhost 2181 | grep Mode #(From 3.3.0 onwards)

以上将在 Zookeeper 运行(独立或嵌入式)的任何模式下工作。

另一种方式

如果 zookeeper 运行 在独立模式下,它是一个 JVM 进程。所以 -

jps | grep Quorum

将显示jvm进程列表;对于进程 ID

的动物园管理员来说是这样的
HQuorumPeer

输入以下命令验证 zookeeper 是否 运行 :

echo "ruok" | nc localhost 2181 ; echo 

预期响应:imok

来自 Windows 10

  • 打开命令提示符,然后输入 telnet localhost 2181,然后输入 srvr
  • 从 bin 文件夹中,打开 PowerShell window 并键入 zkServer.sh status

对于使用官方 docker 图片的人:

https://hub.docker.com/_/zookeeper

在白名单中只启用srvr

见下面的例子:

telnet hostname 2181                                                                                                                                
Trying ::1...
Connected to localhost.
Escape character is '^]'.
srvr
Zookeeper version: 3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC
Latency min/avg/max: 0/0.0/0
Received: 3
Sent: 2
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 5
Connection closed by foreign host.

文档:

ZOO_4LW_COMMANDS_WHITELIST

Defaults to srvr. Zookeeper's 4lw.commands.whitelist

A list of comma separated Four Letter Words commands that user wants to use. A valid Four Letter Words command must be put in this list else ZooKeeper server will not enable the command. By default the whitelist only contains "srvr" command which zkServer.sh uses. The rest of four letter word commands are disabled by default.