Apache kafka 无法在Flume中为启用Kerberos的群集登录异常配置KafkaChannel或KafkaSource

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

我尝试在Flume中设置KafkaChannel(或KafkaSource)。我经常收到以下例外情况

原因:javax.security.auth.login.login异常:无法登录: 客户端被要求输入密码,但卡夫卡客户端代码无效 当前不支持从用户处获取密码。 确保将-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吗?如果需要更多细节,请告诉我

由于这个(),我注意到中指定的
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。 使用卡夫卡文档,并为上面使用的用户(包括卡夫卡)设置卡夫卡主题的权限以允许访问。除非您这样做,否则您将无法访问这些主题,并将显示相同的错误

致以最良好的祝愿