除了ip这种scheme,digest和auth的使用对用户都不是透明的,这也给使用带来了很大的成本,很多依赖zookeeper的开源框架也没有加入对ACL的支持,例如hbase,storm。
2 Zookeeper quota
ZooKeeper quota机制支持节点个数(znode)和空间大小(字节数)。
[zk: localhost:2181(CONNECTED) 2] create /test_quota "12345"
Created /test_quota
[zk: localhost:2181(CONNECTED) 3] listquota /test_quota
absolute path is /zookeeper/quota/test_quota/zookeeper_limits
quota for /test_quota does not exist.
# 这里看到quota还没有设置
[zk: localhost:2181(CONNECTED) 4] setquota -n 5 /test_quota
Comment: the parts are option -n val 5 path /test_quota
# -n表示设置znode count限制,这里表示/test_quota这个path下的znode count个数限制为5(包括/test_quota本身)
# -b 表示设置znode数据的字节大小限制,这里不做演示了,有兴趣的同学下去自己实验
[zk: localhost:2181(CONNECTED) 5] listquota /test_quota
absolute path is /zookeeper/quota/test_quota/zookeeper_limits
Output quota for /test_quota count=5,bytes=-1 # 限制znode count为5
Output stat for /test_quota count=1,bytes=7 # 目前znode count为1
[zk: localhost:2181(CONNECTED) 3] create /test_quota/0 "0"
Created /test_quota/0
[zk: localhost:2181(CONNECTED) 6] create /test_quota/1 "1"
Created /test_quota/1
[zk: localhost:2181(CONNECTED) 7] create /test_quota/2 "2"
Created /test_quota/2
[zk: localhost:2181(CONNECTED) 8] create /test_quota/3 "3"
Created /test_quota/3
[zk: localhost:2181(CONNECTED) 9] create /test_quota/4 "4"
Created /test_quota/4
# 上面新建了多个znode
看zookeeper的日志,发现有Quota exceeded的日志,这里要说明一下zookeeper的Quota机制是比较温和的,即使超限了,只是在日志中报告一下,并不会限制Client的行为,Client可以继续操作znode。
在实际项目中,Client可以查看/zookeeper/quota目录下的数据来确定是否超出quota限制,由此来做一些告警。
[zk: localhost:2181(CONNECTED) 4] get /zookeeper/quota/test_quota/zookeeper_limits
count=5,bytes=-1
[zk: localhost:2181(CONNECTED) 5] get /zookeeper/quota/test_quota/zookeeper_stats
count=7,bytes=25
--------------------------------------分割线 --------------------------------------
Ubuntu 14.04安装分布式存储Sheepdog+ZooKeeper
CentOS 6安装sheepdog 虚拟机分布式储存
分布式服务框架 ZooKeeper -- 管理分布式环境中的数据
--------------------------------------分割线 --------------------------------------