gpt4 book ai didi

java - Kafka ACL - LEADER_NOT_AVAILABLE

转载 作者:搜寻专家 更新时间:2023-11-01 03:16:31 24 4
gpt4 key购买 nike

我在向使用 ACL 保护的 Kafka 主题(名为 secure.topic)生成消息时遇到问题。我基于 Groovy 的生产者抛出这个错误:

Error while fetching metadata with correlation id 9 : {secure.topic=LEADER_NOT_AVAILABLE}

关于配置的一些注意事项:

  • 1 个 Kafka 服务器,版本 2.11_1.0.0(服务器和 Java 客户端库)
  • topic ACL设置为All(也用--producer测试),user为证书中指定的全名
  • 使用自行生成的证书启用客户端身份验证

额外的服务器配置:

 security.inter.broker.protocol = SSL
ssl.client.auth = required
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

如果我删除 authorizer.class.name 属性,那么我的客户端可以生成消息(因此,SSL 和证书没问题)。

此外,kafka-authorizer.log 会产生以下消息:

[2018-01-25 11:57:02,779] INFO Principal = User:CN= User,OU=XXX,O=XXX,L=XXX,ST=Unknown,C=X is Denied Operation = ClusterAction from host = 127.0.0.1 on resource = Cluster:kafka-cluster (kafka.authorizer.logger)

知道启用 ACL 时什么会导致 LEADER_NOT_AVAILABLE 错误吗?

最佳答案

从授权方日志来看,授权方似乎拒绝了Cluster 资源上的ClusterAction

如果您检查您的主题状态(例如使用 kafka-topic.sh),我希望看到它没有 Leader (-1)。

启用授权时,它们将应用于到达集群的所有 Kafka API 消息,包括代理间消息,如 StopReplica、LeaderAndIsr、ControlledShutdown 等。因此看起来您只为客户端添加了 ACL,但忘记添加所需的 ACL以便经纪人发挥作用。

因此,您至少需要在 Cluster 资源上为代理的主体添加一个授予 ClusterAction 的 ACL。 IIRC,这是经纪人间消息唯一需要的 ACL。

之后,您的集群应该能够正确地为分区选择一个领导者,使您的客户端能够生产。

关于java - Kafka ACL - LEADER_NOT_AVAILABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48442647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com