Kafka 服务器 - 在 JAAS 中找不到 'KafkaServer'

Kafka Server - Could not find a 'KafkaServer' in JAAS

我有一个独立的 kafka 代理,我正在尝试为其配置 SASL。配置如下。我正在尝试在代理上设置 SASL_PLAIN 身份验证。

我的理解是 listener.name... 在 server.properties 中的配置,我不需要 jaas 文件。但我已经尝试了一种方法,看看这是否是更好的方法。

我对这些命令中的每一个都进行了试验,但都导致了相同的异常。

显示的异常是:

Fatal error during KafkaServer startup. Prepare to shutdown... Could not find a 'KafkaServer' or 'sasl_plaintext.KafkaServer' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set

server.properties:

listeners=SASL_PLAINTEXT://0.0.0.0:9092
listener.security.protocol.map: SASL_PLAINTEXT:SASL_PLAINTEXT
listener.name.SASL_PLAINTEXT.plain.sasl.jaas.config:
            org.apache.kafka.common.security.plain.PlainLoginModule required /
username="username" /
password="Password" /
user_username="Password";  

advertised.listeners=SASL_PLAINTEXT://[ipaddress]:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
secutiy.inter.broker.protocol=SASL_PLAINTEXT

kafka_server_jaas.conf:

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
   username="username"
   password="Password"
   user_username="Password";
};

我已经花了一天时间查看这个问题了 - 有没有其他人遇到过这个问题?

您需要导出变量,而不是将配置内联到 kafka-server-start(或 sudo)。

export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
bin/kafka-server-start /path/to/server.properties

参考。 Confluent's sections on Kafka security

为了节俭把我的错误放在这里:

  • 不要从 cli 执行启动命令,将它们放在 .sh 文件中,然后从那里 运行: 例如,像这样:

zkstart

export KAFKA_OPTS="-Djava.security.auth.login.config=etc/kafka/zookeeper_jaas.conf"
bin/zookeeper-server-start etc/kafka/zookeeper.properties &

kafkastart

export KAFKA_OPTS=-Djava.security.auth.login.config=etc/kafka/kafka_server_jaas.conf
bin/kafka-server-start etc/kafka/server.properties
  • 如果您仍然遇到与配置相关的错误,请检查您的 _jaas 文件以确保错误消息中的所有配置部分都存在。如果是,则格式可能不太正确 - 检查每个部分中的两个分号,如果失败,请尝试完全从头开始重新创建文件(或从文档中的 c&p)。

编辑 因此,我的最终解决方案是将 export... 添加到相应的 kafka-server-start 和 zookeeper-server-start 文件的开头。我花了一段时间 'everything is a file' 终于点击,我意识到脚本文件是服务的实际基础。