在Flink集群上验证Kafka jaas失败



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

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

export 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

为了创建一个keytab文件,我使用了klist。它似乎总是在添加一个用户名,例如。MyUserId@somedomain.com.有办法避免这种情况吗?

相关内容

  • 没有找到相关文章

最新更新