如何从命令提示符检查 ZooKeeper 是不是正在运行或启动?

Posted

技术标签:

【中文标题】如何从命令提示符检查 ZooKeeper 是不是正在运行或启动?【英文标题】:How to check if ZooKeeper is running or up from command prompt?如何从命令提示符检查 ZooKeeper 是否正在运行或启动? 【发布时间】:2015-05-20 07:43:12 【问题描述】:

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

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

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

2) 检查 ZooKeeper 是否启动并运行---我尝试执行ps -ef | grep "zoo" 我找不到任何东西。可能是我使用了错误的关键字进行搜索??

任何帮助将不胜感激?

【问题讨论】:

你的意思是from the command prompt on zookeeper's node?还是from the client node's command prompt? 【参考方案1】:

来自 Windows 10

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

【讨论】:

【参考方案2】:

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

echo "ruok" | nc localhost 2181 ; echo 

预期回复:imok

【讨论】:

【参考方案3】:
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 的 zookeeper 来说是这样的

HQuorumPeer

【讨论】:

【参考方案4】:

检查 Zookeeper 是否可访问。一种方法是简单地 telnet 到正确的端口并执行 stats 命令。

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.

【讨论】:

telnet 通常不可用/未安装在服务器上 'stats' 在我的 Windows 上不起作用。改用“srvr”。 列出了可用的“四个字母单词”列表here。据此stat 是正确的词。但是 - 我认为 - 它必须被列入白名单。在我的情况下,默认情况下只有 srvr 被列入白名单(Windows)。【参考方案5】:

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

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

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

【讨论】:

echo ruok | nc &lt;zookeeper ip&gt; 2181 如果没问题就返回“imok”,所以这可能是最容易解析的。 nc 可能并非在所有环境中都可用。 不要忘记允许ZOO_4LW_COMMANDS_WHITELIST="*" 或更少,例如"stat",如果你在容器中运行 Zk。否则你会得到一个stat is not executed because it is not in the whitelist. Reference【参考方案6】:

进入Zookeeper的bin目录并输入

./zkServer.sh status

更多信息请点击以下链接:

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

希望这对你有帮助。

【讨论】:

查看:zookeeper.apache.org/doc/r3.4.8/zookeeperStarted.html 并将“r3.4.8”更改为您的 zookeeper 版本 zkServer status ZooKeeper JMX 默认启用 使用配置:/usr/local/etc/zookeeper/zoo.cfg 模式:standalone【参考方案7】:

我使用:

  jps

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

  HQuorumPeer

或某事。以 zookeeper 为名。

【讨论】:

【参考方案8】:

我做了一些测试:

当它运行时:

$ /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.

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

【讨论】:

【参考方案9】:

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

jps -l | grep zookeeper

甚至像这样:

jps | grep Quorum

更新:

关于这个:will hostname be the hostname of my box?? - 答案是肯定的。

【讨论】:

以上是关于如何从命令提示符检查 ZooKeeper 是不是正在运行或启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查之前的 Zsh 提示符中是不是没有输入任何内容

如何检查Apache Kafka服务运行状态

如何检查 smtp 是不是从命令行(Linux)工作 [关闭]

搭建Zookeeper集群服务启动失败

如何检查字符串是不是表示正的非零 int?

在 Windows 中检查版本兼容性而不在命令提示符或任何命令行工具中编写任何命令?