公司决定使用zookeeper作为配置管理中心,所以编写自动化测试用例时,无可避免的要对zookeeper进行操作。 我主要使用python,所以这里记录下python下访问zookeeper的过程。
工作环境:
Centos6.8 64位
Python 2.7.13
安装zkpython包
zkpython包是zk客户端的python实现, 但是这个实现要依赖于zk客户端的c实现,所以我们需要先安装c版本的客户端。
从这里下载最新的版本
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
当前最新的版本是3.4.14
先下载最新的版本
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
解压:
tar -xzf zookeeper-3.4.14.tar.gz
编译,安装:
cd zookeeper-3.4.14/zookeeper-client/zookeeper-client-c
./configure
make
make install
【注意】如果在python中import zkpython 是失败,提示找不到动态库的话,可能是因为上面的装过程,将动态库放到不是默认搜索路径的地方。 在我的系统中,动态库放到了/usr/local/lib/下,而ldconfig的默认配置没有包含这个路径,所以会提示找不到动态库。 遇到这个问题,只要在/etc/ld.so.conf文件中,将/usr/local/lib/加入,然后再调用 ldconfig,即可。
安装zkpython包
pip install zkpython
需要指定版本的话,可以 pip install zkpython==0.4.2
读写zookeeper中的数据
import zookeeper
conn = zookeeper.init("192.168.10.29:2181")
#创建一个节点
zookeeper.create(conn, "/first_node","data-1",[{"perms":0x1f,"scheme":"world","id":"anyone"}]),0);
#读取节点的数据
zookeeper.get(conn,"/first_node")
#修改节点数据
zookeeper.set(conn,"/first_node","data-2");
#删除节点
zookeeper.delete(conn,"/first_node");
#用完后要关闭连接
zookeeper.close(conn);