ZooKeeper 配额指南
部署和管理指南
配额
ZooKeeper 具有命名空间和字节配额。您可以使用 ZooKeeperMain 类来设置配额。如果用户超过分配给他们的配额,ZooKeeper 会打印WARN消息。消息打印在 ZooKeeper 的日志中。
注意:namespace
配额的意思是计数配额,它限制路径下的孩子数量(包括自己)。
$ bin/zkCli.sh -server host:port**
上面的命令为您提供了使用配额的命令行选项。
设置配额
-
您可以使用
setquota
在 ZooKeeper 节点上设置配额。它有一个设置配额的选项-n
(用于命名空间/计数)和-b
(用于字节/数据长度)。 -
ZooKeeper 配额存储在 ZooKeeper 本身的/zookeeper/quota中。要禁止其他人更改配额,用户可以为/zookeeper/quota设置 ACL ,这样只有管理员才能对其进行读写。
-
如果指定路径中不存在配额,则创建配额,否则更新配额。
-
配额用户设置的Scope是指定路径下的所有节点(包括自身)。
-
为了简化当前目录/层次结构中配额的计算,一个完整的树路径(从根到叶节点)可以只设置一个配额。在其父节点或子节点已具有配额的路径中设置配额的情况下。
setquota
将拒绝并告诉指定的父子路径,用户可以根据具体情况调整配额的分配(删除/上移/下移配额)。 -
结合Chroot,配额在不同应用之间会有更好的隔离效果。例如:
# Chroot is: 192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/apps/app1 setquota -n 100000 /apps/app1
-
用户无法在/zookeeper/quota下的路径上设置配额
-
配额支持软配额和硬配额。软配额仅在超出配额时记录警告信息,但硬配额也会抛出
QuotaExceededException
. 在同一路径上设置软配额和硬配额时,硬配额优先。
上市配额
您可以使用listquota列出 ZooKeeper 节点上的配额。
删除配额
您可以使用delquota删除 ZooKeeper 节点上的配额。