Kafkaacl-领袖\u不可用\u

xn1cxnb4  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(353)

我在向Kafka主题(名为 secure.topic )用acl保护。我的groovy制作人抛出了以下错误:

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

有关配置的一些说明:
1台kafka服务器,版本2.11\u 1.0.0(服务器和java客户端libs)
主题acl设置为 All (也用 --producer )用户是证书中指定的全名
使用自生成的证书启用客户端身份验证
其他服务器配置:

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)

你知道是什么引起的吗 LEADER_NOT_AVAILABLE 启用acl时出错?

1sbrub3j

1sbrub3j1#

从授权人日志来看,授权人好像被拒绝了 ClusterActionCluster 资源。
如果您检查主题状态(例如使用 kafka-topic.sh ),我希望看到它没有一个领导人(-1)。
启用授权时,它们将应用于到达集群的所有kafka api消息,包括代理间消息,如stopreplica、leaderandisr、controlledshutdown等。因此,看起来您只是为客户端添加了ACL,但忘记了添加代理运行所需的ACL。
所以你至少需要添加一个acl ClusterActionCluster 你经纪人的委托人的资源。iirc这是代理间消息唯一需要的acl。
接下来,集群应该能够正确地为分区选择一个引导者,使您的客户机能够生成。

相关问题