如何从命令提示符检查 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 <zookeeper ip> 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 是不是正在运行或启动?的主要内容,如果未能解决你的问题,请参考以下文章