Apache kafka 无法在Flume中为启用Kerberos的群集登录异常配置KafkaChannel或KafkaSource
我尝试在Flume中设置KafkaChannel(或KafkaSource)。我经常收到以下例外情况 原因:javax.security.auth.login.login异常:无法登录: 客户端被要求输入密码,但卡夫卡客户端代码无效 当前不支持从用户处获取密码。 确保将-Djava.security.auth.login.config属性传递给JVM 客户端被配置为使用票据缓存 (使用JAAS配置设置“useTicketCache=true)”。 确保您使用的是您尝试使用的Kafka代理的FQDN 连接到无法从用户获取身份验证信息 我的Apache kafka 无法在Flume中为启用Kerberos的群集登录异常配置KafkaChannel或KafkaSource,apache-kafka,kerberos,cloudera,flume,flume-ng,Apache Kafka,Kerberos,Cloudera,Flume,Flume Ng,我尝试在Flume中设置KafkaChannel(或KafkaSource)。我经常收到以下例外情况 原因:javax.security.auth.login.login异常:无法登录: 客户端被要求输入密码,但卡夫卡客户端代码无效 当前不支持从用户处获取密码。 确保将-Djava.security.auth.login.config属性传递给JVM 客户端被配置为使用票据缓存 (使用JAAS配置设置“useTicketCache=true)”。 确保您使用的是您尝试使用的Kafka代理的FQD
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吗?如果需要更多细节,请告诉我 由于这个(),我注意到中指定的KafkaClient
config缺少一些选项。然后我看了一眼,发现我错过了以下属性:
a1.channels.channel1.kafka.consumer.sasl.mechanism = GSSAPI
a1.channels.channel1.kafka.consumer.sasl.kerberos.service.name = kafka
根据卡夫卡文件,sasl_明文已添加到版本
0.10
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开始
但是flume版本1.8
仍然使用kafka\u client\u 2.11\u 0.9.1.jar
。我想这可能是水槽的错误。
您可以重写flume-kafka-sink.jar来修复错误
卡夫卡客户端
可以起诉粘贴的配置
以上是好的,但需要注意的是以下几点
1.非Cloudera用户的主体名称必须与KLIST中显示的名称完全相同。
2.非常基本,使用键选项卡文件的完整路径
如果使用“Kafka console consumer”,则必须从命令行选择下一个JAVA_选项;如果使用Cloudera manager,则必须在配置参数中选择下一个JAVA_选项
如果使用Kafka控制台使用者,请记住使用--consumer.config开关指向client.properties文件
完成以上所有操作后,您可能仍会收到相同的错误。
这是由于ACL。
使用卡夫卡文档,并为上面使用的用户(包括卡夫卡)设置卡夫卡主题的权限以允许访问。除非您这样做,否则您将无法访问这些主题,并将显示相同的错误
致以最良好的祝愿