【问题标题】:Zookeeper - Where do I find the "real" version of a running instance of Zookeeper?Zookeeper - 我在哪里可以找到正在运行的 Zookeeper 实例的“真实”版本?
【发布时间】:2018-06-15 19:27:41
【问题描述】:

我最近安装了一个带有 Exhibitor 的新 ZK 节点,它开始正常。当我执行telnet localhost 2181 然后运行stats 以查看版本时,即使我安装了 3.4.11,我仍然在输出中看到 3.4.5 构建。我试图找到 ZooKeeper 在哪里读取版本号,但它只是一个 .jar 和一些 lib 文件。你知道我在哪里可以得到我应该运行的“真实”版本吗?谢谢!

这是我在做telnet时看到的:

myserver:/tmp/zookeeper # telnet localhost 2181
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT
Clients:
 /127.0.0.1:53133[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 41
Sent: 40
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
Connection closed by foreign host.

运行过程(ps aux | grep zookeeper)显示:

myuser    19002  0.9  1.2 2618596 49596 ?       Sl   14:02   0:00 /usr/pkgs/java/1.8.0.92/bin/java -Dzookeeper.log.dir=/var/run/zookeeper/log -Dzookeeper.root.logger=WARN,ROLLINGFILE -cp /opt/zookeeper-server/default/bin/../build/classes:/opt/zookeeper-server/default/bin/../build/lib/*.jar:/opt/zookeeper-server/default/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper-server/default/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper-server/default/bin/../lib/netty-3.10.5.Final.jar:/opt/zookeeper-server/default/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper-server/default/bin/../lib/jline-0.9.94.jar:/opt/zookeeper-server/default/bin/../lib/exhibitor-1.6.0.jar:/opt/zookeeper-server/default/bin/../lib/audience-annotations-0.5.0.jar:/opt/zookeeper-server/default/bin/../zookeeper-3.4.11.jar:/opt/zookeeper-server/default/bin/../src/java/lib/*.jar:/var/run/zookeeper/conf: -server -Xmx1g -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /var/run/zookeeper/conf/zoo.cfg

【问题讨论】:

    标签: apache-zookeeper


    【解决方案1】:

    ZooKeeper 支持四个字母的命令,假设您在 localhost 上运行 ZooKeeper:

    $ echo "status" | nc  localhost 2181 | head -n 1
    Zookeeper version: 3.4.9-3--1, built on Fri, 24 May 2019 08:57:53 +0100
    

    使用一些 bash 魔法,您可以过滤掉主版本:

    $ echo "status" | nc  localhost 2181 | head -n 1 | awk '{ print $3}' | cut -d "-" -f 1
    

    【讨论】:

      【解决方案2】:

      cat zookeeper-server.log | grep zookeeper.version

      .... INFO 服务器环境:zookeeper.version=3.5.7-f0fdd52973d373ffd9c86b81d99842dc2c7f660e,建于 02/10/2020 11:30 GMT (org.apache.zookeeper.server.ZooKeeperServer) .....

      【讨论】:

        【解决方案3】:

        查看源码后,似乎有一个叫Info的接口给出版本号。可以看这里:https://github.com/apache/zookeeper/blob/master/src/java/main/org/apache/zookeeper/Version.java

        所以,版本文件是在构建时完成的。

        【讨论】:

          【解决方案4】:

          管理服务器 3.5.0 中的新功能:AdminServer 是一个嵌入式 Jetty 服务器,它为四个字母的单词命令提供 HTTP 接口。默认情况下,服务器在 8080 端口上启动,并通过转到 URL“/commands/[command name]”来发出命令,例如 http://localhost:8080/commands/stat
          示例:

          $  curl -s http://localhost:8080/commands/envi |grep zookeeper.version  
          $ "zookeeper.version" : "3.5.8"  
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-11-11
            • 2021-12-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-19
            • 1970-01-01
            相关资源
            最近更新 更多