繁体   English   中英

Kafka Jaas验证在Flink群集上失败

[英]Kafka jaas verify failed on Flink cluster

我遇到了一个非常奇怪的问题

Could not find a "KafkaClient" entry in the JAAS configuration. System property "java.security.auth.login.config" is /etc/kafka/kafka_sink_jaas.conf

当我使用Apache Beam KafkaIO从kafka消费记录时,在单节点Apache Flink群集上运行。 JAAS文件包含“ KafkaClient”,但是Flink集群找不到该条目。 有人知道原因吗?

我已经解决了这个问题。 这是由flink集群kerberos配置引起的。 只需在flink-conf.yaml上设置一些配置即可使其正常工作!

设置如下:

security.kerberos.login.use-ticket-cache: false 
security.kerberos.login.keytab: /etc/kafka/kafka.keytab
security.kerberos.login.principal: kafka@HADOOP.COM
security.kerberos.login.contexts: Client,KafkaClient

我想向您推荐一些尝试的方法。

设置KAFKA_OPTS

导出KAFKA_OPTS =“-Djava.security.auth.login.config = / etc / kafka / kafka_sink_jaas.conf”

在您的代码中添加以下内容

System.setProperty("java.security.auth.login.config", "/etc/kafka/kafka_sink_jaas.conf")
System.setProperty("java.security.krb5.conf", "/etc/krb5.conf")
System.setProperty("sun.security.krb5.debug", false)
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false")

希望这会有所帮助。

在本地运行Flink时,我使用了这个jaas配置文件。 如Fred所述,以下内容不适用于群集模式。

    KafkaClient {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="MyUserId"
    password="MyPwd";
    };

security.kerberos.login.use-ticket-cache: false 
security.kerberos.login.keytab: /etc/kafka/kafka.keytab
security.kerberos.login.principal: kafka@HADOOP.COM
security.kerberos.login.contexts: Client,KafkaClient

如果我们使用kerberos设置,这是正确的吗? security.kerberos.login.principal:MyUserId

我还使用klist来创建密钥表文件。 它似乎总是在向用户添加域名,例如MyUserId@somedomain.com。 有办法避免这种情况吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM