大概就是我在客户现场给部署好的zookeeper添加两个服务器地址的白名单,
在zk启动服务以后先打了一条试试
setAcl / ip:10.0.170.185:cdrwa,ip:127.0.0.1:cdrwa
然后再实际getAcl的时候也打印了这两个ip地址跟cdrwa
但是我想继续添加白名单
setAcl / ip:10.0.170.185:cdrwa,ip:10.0.170.184:cdrwa,cdrwa,ip:127.0.0.1:cdrwa
然后就提示了如下Authentication is not valid : /
这是啥意思是我/符号还是空格打错了吗, 我百度了也试过了我去掉空格什么的也不对
在 ZooKeeper 中,使用 setAcl
命令设置访问控制列表(ACL)时,需要确保 ACL 字符串的格式正确。每个 ACL 条目通常由四部分组成:scheme:id:permission
,其中 scheme
是认证机制(如 ip
),id
是认证标识符(如 IP 地址),permission
是权限集(如 cdrwa
)。
当你想要为同一个 znode 设置多个 ACL 条目时,这些条目应该用逗号分隔,但每个条目内部(即 scheme:id:permission
)不应该有额外的逗号或空格。
从你的描述来看,你尝试添加的 ACL 字符串格式有误。你写的:
复制代码
setAcl / ip:10.0.170.185:cdrwa,ip:10.0.170.184:cdrwa,cdrwa,ip:127.0.0.1:cdrwa
这里有几个问题:
第一个 ACL 条目和第二个 ACL 条目之间用逗号分隔是正确的,但第二个条目后面的
,cdrwa
(注意这里是一个全角逗号)是不正确的,应该是一个半角逗号,
。cdrwa
权限集被错误地放在了两个条目之间,这会导致格式错误。每个 ACL 条目应该独立且完整地包含
scheme:id:permission
。
正确的格式应该是:
复制代码
setAcl / ip:10.0.170.185:cdrwa,ip:10.0.170.184:cdrwa,ip:127.0.0.1:cdrwa
确保使用半角逗号 ,
来分隔不同的 ACL 条目,并且每个条目都符合 scheme:id:permission
的格式。
另外,请注意以下几点:
在执行
setAcl
命令之前,确保你有足够的权限来修改该 znode 的 ACL。如果 znode 已经存在 ACL,并且你想要添加或修改其中的条目,你需要先获取当前的 ACL,然后在此基础上进行修改。
ZooKeeper 的 ACL 是基于 znode 的,而不是全局的。这意味着你需要为每个需要设置 ACL 的 znode 分别执行
setAcl
命令。
如果你仍然遇到问题,请检查 ZooKeeper 的日志文件以获取更详细的错误信息,这有助于诊断问题所在。
0条评论
我要评论