首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kafka ACL - LEADER_NOT_AVAILABLE

Kafka ACL - LEADER_NOT_AVAILABLE
EN

Stack Overflow用户
提问于 2018-01-25 12:15:36
回答 1查看 2.3K关注 0票数 4

我有一个问题,生成一个用ACL保护的卡夫卡主题(名为secure.topic)的消息。我的基于Groovy的生产者抛出了这个错误:

代码语言:javascript
复制
Error while fetching metadata with correlation id 9 : {secure.topic=LEADER_NOT_AVAILABLE}

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

  • 1卡夫卡服务器,版本2.11_1.0.0 (服务器和Java客户端库)
  • 主题ACL设置为All (也使用--producer测试),用户是证书中指定的全名。
  • 使用自生成证书启用客户端auth

附加服务器配置:

代码语言:javascript
复制
 security.inter.broker.protocol = SSL
 ssl.client.auth = required
 authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

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

此外,kafka-Authizer.log生成以下消息:

代码语言:javascript
复制
[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错误吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 12:47:37

从授权程序日志来看,它看起来像是拒绝了ClusterAction资源上的Cluster

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

当启用授权时,它们将应用于到达集群的所有Kafka消息,包括代理间消息(如StopReplica、LeaderAndIsr、ControlledShutdown等)。因此,看起来您只为客户添加all,而忘记添加代理运行所需的all。

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48442647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档