通过JMX方式来进行ZooKeeper的运维。

        运行时Java系统的管控,不得不提JMX(Java Management Extensions,Java管理扩展)。JMX是一个为应用程序、设备、系统等植入管理功能的框架,能够非常方便的让Java系统对外提供运行时数据信息获取和系统管控的接口。从3.3.0版本开始,ZooKeeper也使用了标准的JMX方式对外提供时数据信息和便捷的管控接口。

开启远程JMX

从Apache官方网站上下载的ZooKeeper,默认开启了JMX功能,但是却只限连接,无法通过远程连接,可以打开%ZK_HOME%/bin目录下的zkServer.sh文件,找到如下图所示的配置。

        在这个配置中并没有开启远程连接JMX的端口信息,通常需要加入以下三个配置才能开启远程JMX:

         例如我们配置开启JMX端口为21811,同时不需要任何权限,如下图所示。

        通过上述配置,就可以允许远程机器和ZooKeeper服务器进行JMX连接了。

通过JConsole连接ZooKeeper

        JConsole(Java监视和管理控制台)是一个Java内置的基于JMX的图形化管理工具,是最常用的JMX连接器。

        假设我们搭建一个由三台服务器组成的ZooKeeper集群,分别有机器A、B和C,其中C是Leader,A和B是Follower,并都开启了JMX远程端口:21811。

        使用JConsole,我们首先连接上服务器A,连接成功后,如下图所示。

        连接成功后,我们可以看到界面上依次有“概述”、“内存”和“线程”等标签页,这些都是JCoonsole上的基本信息,这里主要讲解MBean标签页中的信息,如下图所示。

        在MBean标签页中,可以看到org.apache.ZooKeeperService节点,及其树状结构的子节点列表,这些就是ZooKeeper服务器对外暴露的MBean。

        在org.apache.ZooKeeperService节点下,首先可以看到ReplicatedServer_id1节点,从该节点的名字中,我们可以识别当前连接的ZooKeeper服务器的SID为1.继续往下可以看到三个子节点:replica.1、replica.2和replica.3,分别代表当前集群中的三台服务器。同时我们可以发现,replica.2和replica.3两个节点下面只有“属性”节点,而replica.1节点下还有一个Follower节点,这也不足为奇,原因就是当前连接的服务器就是SID为1的服务器,因此对于SID为2和3的ZooKeeper服务器,能够获取到的信息不多。从“属性”节点中,我们可以看到服务器的基本配置信息,包括所选用的Leader选举算法(ElectionType)、单个客户端最大连接数(MaxClientCnxnsPerHost)、会话的超时时间和启动时间等。

        我们再来看replica.1节点下的Follower节点,如下图所示。

        在Follower节点下的“属性”节点上,我们可以看到Follower服务器当前的运行时信息,包括:请求处理的平均延时(AvgRequestLatency)、客户端服务器端口和收到/发送的数据包个数,在上图的示例中,replica.1节点下有一个Follower节点,这表明当前服务器的角色是Follower。

        下面我们来看Leader服务器的数据信息。通过同样的方式,我们使用JConsole连接到服务器C上,如下图所示。

        首先,我们可以看到在replica.3节点下已经出现了Leader节点,表明该服务器的角色是Leader。选择“属性”节点,我们还可以发现,右侧出现了CurrentZxid属性,表明当前Leader服务器上处理的最后一个事务的ZXID是0x1400000045。

        下面我们再来看看有哪些对Leader服务器的操作,如下图所示。

         从上图中我们可以看到,Leader服务器对外提供了四个操作,下表中列举了这四个操作。

 

操作说明
followerInfo()获取所有Follower的运行时信息。该操作只在Leader服务器上提供
resetLatency()重置所有与客户端请求处理延时相关的统计
resetMaxLatency()重置客户端请求处理的最大延时统计
resetStatistics()重置所有客户端请求处理延时统计,以及所有客户端数据包发送与接收量的统计

        作为示例,我们执行followerInfo操作,之后就会罗列出当前集群中所有Follower的运行时信息,如下图所示。

        从上图中我们可以看到,集群中一共有两个Follower服务器。

       下面我们来看最后一个MBean:InMemoryDataTree。这个MBean就是ZooKeeper服务器上的内存数据库,如下图所示。

        选择“属性”节点,我们可以看到当前内存数据库中最后处理的事务ID、数据节点的总个数以及Watcher的总个数。

        下面我们再来看看针对内存数据库,我们有哪些操作,如下图所示。

        从上图中我们可以看到,ZooKeeper向我们提供了两个操作,分别用于统计内存数据库所有节点的数据总量和临时节点总个数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值