You need to enable JavaScript to run this app. Confluent6.0.1 Kafka配置ACL报/kafka-acl/TransactionalId无权限
优惠活动
大模型
产品
解决方案
定价
更多

Confluent6.0.1 Kafka配置ACL报/kafka-acl/TransactionalId无权限

问题根因
  • ZooKeeper服务端配置了requireClientAuthScheme=sasl,强制所有客户端通过SASL digest认证才能访问节点。
  • 执行kafka-acls.sh命令时,当前执行环境未加载ZK客户端的SASL认证配置,工具以匿名身份连接ZK,无权限创建/kafka-acl/TransactionalId等子节点,触发NoAuth异常。
  • 存在两处配置不匹配,可能导致认证失效:
    • ZooKeeper JAAS定义的user_kafka密码为Kafka@20,但Kafka节点JAAS的Client块(ZK连接客户端)配置的kafka用户密码为kafka-secret,二者不一致。
    • 节点专属server.properties的advertised.listeners中SSL监听项缺少端口,虽不直接影响当前认证,但会导致后续客户端连接异常。
修复步骤

1. 修正配置不匹配项

  • 修改Kafka节点JAAS文件的Client块,将密码调整为与ZooKeeper端一致的Kafka@20:
Client {
   org.apache.zookeeper.server.auth.DigestLoginModule required
   username="kafka"
   password="Kafka@20"
   user-admin="admin";
};
  • 修正所有节点的advertised.listeners配置,补全SSL监听端口:
advertised.listeners=PLAINTEXT://kafkaserver1:9092,SSL://kafkaserver1:9093,SASL_SSL://kafkaserver1:9094

(注:kafkaserver2、kafkaserver3需对应替换节点主机名)

2. 确保服务启动时加载正确的JAAS配置

  • ZooKeeper进程启动参数需添加JVM参数,指定服务端JAAS文件路径:-Djava.security.auth.login.config=/opt/confluent-community/conf/zookeeper_jaas.conf(路径根据实际部署调整)
  • Kafka进程启动参数需添加JVM参数,指定服务端JAAS文件路径:-Djava.security.auth.login.config=/opt/confluent-community/conf/kafka_jaas.conf(路径根据实际部署调整)

3. 执行ACL命令时携带认证配置

在执行kafka-acls.sh前,临时在当前shell环境中指定JAAS配置路径,让工具能以合法身份连接ZK:

export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/confluent-community/conf/kafka_jaas.conf"
$KAFKA_HOME/bin/kafka-acls.sh --authorizer-properties zookeeper.connect=kafkaserver1:2181,kafkaserver2:2181,kafkaserver3:2181 --add --allow-principal User:demouser --operation Create --operation Describe --topic demo-topic

4. (可选)验证ZK权限

可通过ZK CLI工具验证认证是否生效:

$KAFKA_HOME/bin/zkCli.sh -server kafkaserver1:2181
addauth digest kafka:Kafka@20
ls /kafka-acl

若能正常返回节点列表,说明认证配置生效。


内容的提问来源于stack exchange,提问作者Andy Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 18:24:06