Zookeeper管理员会因为某些客户端对某些节点设置了权限,而导致在紧急的情况下无法修改这些节点感到困扰。在这种情况下,管理员可以通过Zookeeper超级用户模式访问这些节点,一旦设置了超级权限访问节点,后续的操作就不需要check ACL了。
使用超级用户模式,可以通过Zookeeper的zookeeper.DigestAuthenticationProvider.superDigest参数开启。
使用org.apache.zookeeper.server.auth.DigestAuthenticationProvider生成superDigest:
@Test
public void generate() {
try {
System.out.println(DigestAuthenticationProvider.generateDigest("super:superpw"));
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出
super:g9oN2HttPfn8MMWJZ2r45Np/LIA=
在${ZOOKEEPER_HOME}/bin/zkServer.sh配置启动参数:
我使用的是zookeeper-3.4.6,修改zkServer.sh文件的第109行:
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.roo