zookeeper安装及简单使用

zookeeper解压即可安装使用,不再赘述

 ------------zookeeper设置访问控制:-------------

ZK的节点有5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

身份的认证有4种方式:
world:默认方式,相当于全世界都能访问
auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
ip:使用Ip地址认证

来源于ZooKeeper设置ACL权限控制 - feshy - 博客园
https://www.cnblogs.com/fesh/p/5798353.html
方式一:(推荐)
1)增加一个认证用户
addauth digest 用户名:密码明文
eg. addauth digest user1:password1
2)设置权限
setAcl /path auth:用户名:密码明文:权限
eg. setAcl /test auth:user1:password1:cdrwa
3)查看Acl设置
getAcl /path

方式二:
setAcl /path digest:用户名:密码密文:权限
注:这里的加密规则是SHA1加密,然后base64编码。
------------------------------
addauth digest user01:123456 #增加用户
setAcl / auth:user01:123456:cdrwa #给目录授权
设置认证后再次连接就无法对目录进行操作,需要增加授权,通过底下命令来授权:
 addauth digest user01:123456
----
auth_data=[('digest', 'user01:123456')]

--------------------Python连接zookeeper代码----------

Python连接zookeeper主要是通过调用zookeeper的C客户端实现,所以需要编译解压目录下面的zookeeper-3.4.13/src/c的代码,生成C客户端及动态链接库,然后将生成的动态链接库libzookeeper_mt.so,libzookeeper_mt.so复制到 /lib目录下,准备完后就可以安装Python依赖包了,推荐使用kazoo这个项目,其他的项目大多停止维护了,而且文档不如kazoo这个项目全。传送门

import traceback

# from zkclient import ZKClient, zookeeper, watchmethod
# '''
# linux安装zookeeper
# 然后编译安装c客户端,ln -s /data/zookeeper/zookeeper-3.4.13/src/libs/*.so* /usr/lib把生成的动态链接库复制到一个新的路径然后链接到/usr/lib下面
# 之后通过ldconfig使链接生效,最后安装zkpython,或者其他Python模块来使用zookeeper
# '''
# from os.path import basename, join
# zkhost='127.0.0.1:2181'
# zkpath = '/'
# es_path = join(zkpath,'es')
# master_num = 1
# timeout = 5000
# zkclient = ZKClient(zkhost,timeout)
# node = (zkpath,es_path)
# if zkclient.exists(node):
#     print('es path exist')
# else:
#     try:
#         zkclient.create(node,'')
#     except:
#         print(traceback.print_exc())



import logging
from time import sleep
from kazoo.client import KazooClient
from kazoo.client import KazooState
#zk = KazooClient('127.0.0.1:2181')
zk = KazooClient('127.0.0.1:2181',auth_data=[('digest', 'user01:123456')])
zk.start()
#zk.add_auth("digest",'user01:123456')
#zk.start()
zk.ensure_path("/1/2/3")
def my_listener():
    print(zk.state)
    if zk.state == "LOST":
        print("zk lost")# Register somewhere that the session was lost
    elif zk.state == "SUSPENDED":
        print("wait for reconnecting")
    else:
        print("zk fine")


def children_callback(children):
    print('****',children)

children = zk.get_children('/zookeeper', children_callback)
my_listener()
zk.create('/goodboy1236456',ephemeral=True,value=b'xxxxxxxxxxxxxxxxxxxx')
#zk.delete('/zookeeper/555555')
xx = zk.ChildrenWatch("/zookeeper/goodboy12364567777")
print(xx.__dict__)

def outprint(event):
    print(event)
y=zk.get('/rookie0000000000',watch=outprint)
#zk.add_listener(outprint)

@zk.ChildrenWatch("/")
def watchdemo(children):
    print(children)
import time
time.sleep(60) #只要不退出,zookeeper就会中的节点就会一直存在,
# 通过这样的方式来一直保持节点存活,kazoo本身是没有那种可以后台运行的方法的,是通过程序不退出来维持的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值