小码问答,有问必答!

2024-12-05 14:54

zookeeper添加两个服务器地址的白名单

2024-12-05 14:54 回答了这个问题

大概就是我在客户现场给部署好的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

这里有几个问题:

  1. 第一个 ACL 条目和第二个 ACL 条目之间用逗号分隔是正确的,但第二个条目后面的 ,cdrwa(注意这里是一个全角逗号)是不正确的,应该是一个半角逗号 ,

  2. cdrwa 权限集被错误地放在了两个条目之间,这会导致格式错误。

  3. 每个 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条评论

我要评论