zk- org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for
Posted llq1214
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zk- org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for相关的知识,希望对你有一定的参考价值。
项目服务都是发布在dubbo+zookeeper上
昨天项目报这个错。
org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for
查了一下,是说权限不对。但是项目里连接dubbo并没有密码。
启动 zkCli.sh
看了一下根目录,
发现看其他目录都好好的,可以查看
看 /dubbo 这个目录 就查看不了,权限有问题。 /dubbo 这个目录就是项目发布服务的目录。
Authentication is not valid
可能是因为之前有个同事把这台服务加入了大数据集群。
get rmr dele不了。最后是启用了超级账户进行删除的。
使用超级用户删除带权限的节点
1.使用org.apache.zookeeper.server.auth.DigestAuthenticationProvider生成superDigest:
try System.out.println(DigestAuthenticationProvider.generateDigest("super:superpw")); catch (NoSuchAlgorithmException e) // TODO Auto-generated catch block e.printStackTrace();
super:g9oN2HttPfn8MMWJZ2r45Np/LIA=
2.在zookeeper服务端的zkEnv.sh环境变量中加入以下参数,开启超级用户,重启zookeeper服务端:
SERVER_JVMFLAGS="-Dzookeeper.DigestAuthenticationProvider.superDigest=super:g9oN2HttPfn8MMWJZ2r45Np/LIA= $SERVER_JVMFLAGS"
3.在客户端使用超级用户登陆
addauth digest super:superpw
4.执行删除命令
rmr /dubbo
deleteall /dubbo
以上是关于zk- org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for的主要内容,如果未能解决你的问题,请参考以下文章
Zookeeper系列三:Zookeeper客户端的使用(Zookeeper原生API如何进行调用ZKClientCurator)