集群搭建
Zookeep启动异常:Error contacting service. It is probably not running.
自己的坑:支持JMX改zkServer.sh脚本时,不同zk服务器的端口分别设置,因为JMX连接时也分别需要从不同的IP+端口分别连接到不同的服务器上去获得数据,如果端口重复就会导致冲突,无法启动服务器。另外,有时候服务器启动不了了,去检查一下为服务器conf的端口是不是已经被别的程序给占用了!
ACL权限管理
zk提供ACL的动机在于:当多个应用或集群共用一个zk集群时,可能造成互相越权访问到不该访问的数据,于是通过ACL来做权限的限制。
ZK的ACL管理以如下模式生效:
Scheme:Id:Perms
Scheme代表模式,用world,auth,digest,ip,super,不同的模式代表了权限分别对哪些类型的对象进行权限设置。
Id是和Scheme对应的标识,用于具体指定对应scheme下哪些对象的权限。
Perms:crwda五种权限(创建,读,写,删除,管理)
实际使用时,需要注意以下几点:
- 为已设置ACL的znode增加或删除权限时,需要先获得已有权限,再一起设置,否则会覆盖原有权限
- 权限无znode父子结点间的继承关系,都是独立的
- 要访问有权限设置的znode,需要先通过权限验证setAuthInfo(scheme,id).