当前位置: 首页 > 知识库问答 >
问题:

在Zookeeper中从AuthenticationProvider连接到Zookeeper

陶法
2023-03-14

我正在使身份验证提供程序在身份验证期间连接到Zookeeper(与运行它相同)并签入节点,如果此用户提供了正确的密码。

基本上,流程看起来像这样:

@Override
public KeeperException.Code handleAuthentication(ServerCnxn cnxn, byte[] authData) {
        final String usernameColonPassword = new String(authData);
        String[] split = usernameColonPassword.split(":");
        final String username = split[0];
        final String password = split[1];

        byte[] binary = curator.getData().forPath(ATUH_NODE); // here error is thrown
        // check is password is correct
}

问题是,当策展人获取数据时,我总是在线获取KeeperErrorCode=ConnectionLoss。这种行为的原因是什么?在身份验证期间,我不被允许连接到授权客户端的动物园管理员?

低于满堆轨道:

    org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for XXX
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
        at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
        at org.apache.curator.framework.imps.ExistsBuilderImpl$2.call(ExistsBuilderImpl.java:172)
        at org.apache.curator.framework.imps.ExistsBuilderImpl$2.call(ExistsBuilderImpl.java:161)
        at org.apache.curator.RetryLoop.callWithRetry(RetryLoop.java:107)
        at org.apache.curator.framework.imps.ExistsBuilderImpl.pathInForeground(ExistsBuilderImpl.java:157)
        at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:148)
        at org.apache.curator.framework.imps.ExistsBuilderImpl.forPath(ExistsBuilderImpl.java:36)

共有1个答案

冯德佑
2023-03-14

因为我发现这是不可能的。在这一点上,zookeeper有某种锁/信号量,他不接受来自这个线程的新连接。

 类似资料:
  • 我用的是Kafka 0.8.2-beta,有2台Ubuntu 14虚拟机: 172.30.141.127正在运行动物园管理员 172.30.141.184在经营一家Kafka经纪人 我正在启动动物园管理员实例,如果一切顺利的话。然后,我尝试启动代理并将其连接到172.30.141.127:2181。它似乎能够在特定的端口上连接并建立会话,但是由于一些似乎没有记录的异常,它失去了连接。 代理输出:

  • 我在docker容器中运行Hbase。当它使用docker compose文件启动时,我看到以下错误: WARN[NIOServerCxn. Factory:0.0.0.0/0.0.0.0: 2181]server. NIOServerCnxn:捕获流结束异常 EndOfStreamException:无法从客户端会话ID 0x16205128eac02db读取其他数据,客户端可能已关闭套接字 在

  • 我按照以下说明设置了一个多节点kafka集群。现在,如何连接到动物园管理员?在JAVA中,只连接一个来自生产者/消费者端的动物园管理员可以吗?或者有办法连接所有的动物园管理员节点吗? 设置多节点阿帕奇动物园守护者集群 在集群的每个节点上,将以下行添加到文件kafka/config/zookeeper.properties中 在群集的每个节点上,在由 dataDir 属性表示的文件夹中创建一个名为

  • 我编写了一个简单的HBase客户端程序来在我的HBase集群(1个主服务器和3个区域服务器)中执行CRUD操作。Zookeeper实例仅在主服务器中运行,仲裁包括所有4台服务器。集群运行良好,可以使用YCSB客户端执行读/写操作(意味着服务器/Zookeeper端没有任何错误)。 现在,在eclipse类路径中,我添加了所有HBase库和hbase-0.94.7.jar(包含hbase-defau

  • 在尝试使用下面提到的 createTopics 函数创建主题时,我在多节点 kafka 集群中遇到了“复制因子:1 大于可用代理:多节点集群上的 0”。我有 3 个 kafka 代理,我尝试为每个主题创建 2 个分区,并将复制因子保持在 1。不知道为什么得到这个错误。在单节点设置(1个动物园管理员和1个kafka经纪人)中,这同样可以很好地工作。 非常感谢任何帮助/ 错误: 我按照以下说明设置了一

  • 警告会话0x0,因为服务器空、意外错误、关闭套接字连接并试图重新连接(org.apache.zookeeper.clientcnxn)java.net.ConnectException:连接被拒绝 zookeeper首先开始,它在2181上,当开始Kafka时,它看着2181“zookeeper”然后在我身上爆炸。忠告?