无法在Flume中配置KafkaChannel或KafkaSource以启用Kerberos群集-LoginException

时间:2017-07-13 14:33:38

标签: apache-kafka kerberos cloudera flume flume-ng

我尝试在Flume中设置KafkaChannel(或KafkaSource)。我不断收到以下例外

  

引起:javax.security.auth.login.LoginException:无法登录:       客户端被要求输入密码,但Kafka客户端代码       目前不支持从用户获取密码。       确保将-Djava.security.auth.login.config属性传递给JVM       并且客户端配置为使用票证缓存       (使用JAAS配置设置'useTicketCache = true)'。       确保您使用的是您正在尝试的Kafka经纪商的FQDN       连接至。无法从用户那里获取身份验证信息

我的jaas.conf正在关注:

KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
serviceName="kafka"
keyTab="flume-kafka.keytab"
principal="flume/kafka@MYDOMAIN.COM";
};

我通过

向Flume提供了这个组合
JAVA_OPTS="$JAVA_OPTS -Djava.security.auth.login.config=/path/to/jaas.conf "

最后我指定了

agent.channels.myChannel.kafka.consumer.security.protocol = SASL_PLAINTEXT

有没有人有任何想法为什么Flume不使用keyTab?如果需要更多细节,请告诉我。

3 个答案:

答案 0 :(得分:0)

感谢此postorininal)我注意到Flume 1.6 documentation provided by Cloudera中指定的KafkaClient配置缺少某些选项。然后我看了Official Apache Flume 1.7 documentation并注意到我错过了以下属性:

a1.channels.channel1.kafka.consumer.sasl.mechanism = GSSAPI
a1.channels.channel1.kafka.consumer.sasl.kerberos.service.name = kafka

答案 1 :(得分:0)

根据kafka文档,版本0.10中添加了sasl_plaintext。

  

SASL / GSSAPI(Kerberos) - 从版本0.9.0.0开始

     

SASL / PLAIN - 从版本0.10.0.0开始

     

SASL / SCRAM-SHA-256和SASL / SCRAM-SHA-512 - 从版本0.10.2.0开始

但是水道版1.8仍然使用kafka_client_2.11_0.9.1.jar。我想这可能是水槽的错误。 你可以重写flume-kafka-sink.jar来修复bug。

Kafka Document

Flume Kafka sink

答案 2 :(得分:0)

KafkaClient 可以粘贴粘贴的配置。

以上情况很好,但以下是需要注意的事项 1.非Cloudera用户的主体名称必须与KLIST中显示的主体名称完全相同。 2.非常基本,请使用密钥标签文件的完整路径

如果使用“ Kafka-console-consumer”,则必须在命令行中使用JAVA_OPTS,如果使用Cloudera Manager,则必须使用config参数。

如果使用Kafka-console-consumer,请记住使用--consumer.config开关指向client.properties文件。

完成上述所有操作后,您仍然可能会收到相同的错误。 那是由于ACL。 用户使用Kafka文档,并为上述用户(包括Kafka)设置Kafka主题权限以允许访问。除非您这样做,否则您将无权访问主题,并且将显示相同的错误。

最良好的祝愿。