第一版、改造node-zk-browser开源项目

由于公司考虑使用zookeeper来做项目配置管理,这就需要一个后台节点管理界面(zookeeper的web管理),在网上找到很多zookeeper的web控制台开源项目,最后选择了node-zk-browser, 在 github上的地址为:https://github.com/killme2008/node-zk-browser。

node-zk-browser是基于node.js的express.js框架和node-zookeeper客户端实现的,是js的MVC框架。它的功能比较简单。首先,将zookeeper集群的数据节点展示为树形结构,跟zookeeper模型保持一致。可以逐步展开每层的节点,每次展开都是延迟加载从zk里取数据,这样不会对zk造成太大压力。其次,除了展示树形结构外,还能展示每个path的属性和数据,登录后能编辑节点数据。其安装步骤可以参照这篇博客:

在CentOS上安装node-zk-browser过程中,一定要用root用户执行npm包依赖安装。我踩过的坑就是使用普通用户去安装(没给我root密码),结果老在中途卡住,报的错误也不是没权限,刚开始以为是node.js和express的版本不匹配,又换了三四个版本,还是不行。之前没用过node.js,后来一个会node.js的同事提醒了下,终于通过了。

我们的项目配置属性想统一成json格式,所以在node-zk-browser上做如下修改: 1. 节点数据文本域展示为格式化的json格式,便于编辑查看。编辑保存时客户端js会把所有的多余空格去掉再保存。多做了个数据格式的验证按钮。 2. 对节点的详细属性做了个“显示”/“隐藏”按钮,默认隐藏。因为主要是查看数据。 3. 对按钮的css样式做了简单的修改,稍微好看些。 修改版的node-zk-browser分支地址:https://github.com/liutpmars/node-zk-browser 界面如下:

ZooKeeper 页面管理系统_node-zk-browser

第二版、Spring版node-zookeeper

内部讨论最终结果,放弃node.js,自行使用Java开发。首先node.js以前从来没用过,另外也不好扩展。我们需要灵活复杂的节点权限控制,从公司内部的OA系统直接登录,增加节点修改审批流程,所有对节点的修改都留下数据库记录以便查找和撤销修改。 >所以我改了一版Java的。使用spring MVC4.0,和JSP来实现,对java人员要求非常低。另外从zkclient客户端,替换为curator框架的客户端,zookeeper版本升级为最新的稳定版3.4.6。只保留了原版的jsp和js,最主要的是利用原来的树形目录树结构jquery.tree.js,虽然这个版本太老了,依赖的jquery也很老,先凑合这用吧。本来就是搞后端开发的,实在不想在这方面费时间了。 第二版工程代码下载地址:

第三版、继续改造第二版node-zookeeper

把公司的需求全部实现,采用公司定制的spring框架,集成内部系统,另外才采用bootstrap做前端。界面到后台都做了大量的修改,由于是公司直接使用的系统,代码就不能分享了。

zookeeper监控taokeeper

taokeeper是淘宝开源的一个zookeeper监控工具,大家按照下面博文就能顺利部署。 主要有如下功能:

CPU/MEM/LOAD的监控

ZK日志目录所在磁盘剩余空间监控

单机连接数的峰值报警

单机 Watcher数的峰值报警

节点自检:是指对集群中每个IP所在ZK节点上的PATH: /YINSHI.MONITOR.ALIVE.CHECK 定期进行三次如下流程 : 节点连接 - 数据发布 - 修改通知 - 获取数据 - 数据对比, 在指定的延时内,三次流程均成功视为该节点处于正常状态。

ZooKeeper 页面管理系统_zookeeper节点管理_02

ZooKeeper 页面管理系统_zookeeper节点管理_03