当尝试使用Apache 1.6.3启用Kerberos启用Apache (0.9)时出错。动物园管理员版本为3.4.5,我必须连接到两个kafka。一种是启用keberos,另一种则不是,所以我不会在spark的额外java选项中设置java.security.auth.login.config属性。
Kafka Initialization failed: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:648)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:542)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:524)
at com.spark.receiver.helper.KafkaChannelHelper.initializeConnection(KafkaChannelHelper.java:277)
at com.spark.receiver.helper.KafkaChannelHelper$2.run(KafkaChannelHelper.java:240)
Caused by: org.apache.kafka.common.KafkaException: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in `/home/user/kafka_client.conf`.
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:74)
at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:60)
at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:79)
at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:577)
... 4 more
Caused by: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in `/home/user/kafka_client.conf`.
at org.apache.kafka.common.security.kerberos.Login.login(Login.java:294)
at org.apache.kafka.common.security.kerberos.Login.<init>(Login.java:104)
at org.apache.kafka.common.security.kerberos.LoginManager.<init>(LoginManager.java:44)
at org.apache.kafka.common.security.kerberos.LoginManager.acquireLoginManager(LoginManager.java:85)
at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:55)
... 7 morejava.security.auth.login.config是在消费者itself.The代码中设置的,连接到kafkaConsumer的代码是:
public void initializeConnection() {
props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_PLAINTEXT");
System.setProperty("java.security.auth.login.config", jassFilePath);
try {
this.consumer = new KafkaConsumer<String, byte[]>(props);
} catch (Exception e) {
LOGGER.error("Kafka Initialization failed: ", e);
}
}kafka_client.conf只包含以下部分:
KafkaClient{
com.sun.security.auth.module.Krb5LoginModule required
debug=true
useKeyTab=true
keyTab="/etc/security/keytabs/user.keytab"
storeKey=true
principal="user@REALM"
serviceName="kafka";
};发布于 2018-01-02 15:51:10
在向安全环境发布/使用数据或从安全环境中发布/使用数据之前,应考虑两点:
Properties props = new Properties();
props.put("security.protocol", "PLAINTEXTSASL");java -Djava.security.auth.login.config=/home/kafka-user/kafka-jaas.conf \
-Djava.security.krb5.conf=/etc/krb5.conf \
-Djavax.security.auth.useSubjectCredsOnly=false \
-cp hdp-kafka-sample-1.0-SNAPSHOT.jar:/usr/hdp/current/kafka-broker/libs/* \
hdp.sample.KafkaProducer one.hdp:6667 test查看安全-卡夫卡-java-生产者-与-kerberos以获得完整的解释。
发布于 2019-04-30 03:13:44
我也有类似的问题卡夫卡1.11.0。
同一JVM中的监视程序正在访问多个代理程序,一些代理程序使用SASL Kerberos,而其他代理程序则不安全。
该参数由程序self在访问安全群集时添加。
-Djava.security.auth.login.config=/home/kafka-user/kafka-jaas.conf但是程序抛出了一个异常:
Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is /path/to/jaas/kafka_client_jaas_usekeytab.conf奇怪的是,java.security.auth.login.config确实是正确设置的,而且这个文件中的内容也很好。
另一个带有单个集群的程序运行良好。
卡夫卡官方文件卡夫卡客户端的JAAS配置说:
Clients may specify JAAS configuration as a producer or consumer property without creating a physical configuration file.
This mode also enables different producers and consumers within the same JVM to use different credentials by specifying different properties for each client.
If both static JAAS configuration system property java.security.auth.login.config and client property sasl.jaas.config are specified, the client property will be used.这里说的另一个问题是:
他只面对java.security.auth.login.config的一些问题。
也许解决办法是:
在您的程序中提供sasl.jaas.config 和 java.security.auth.login.config。
我会试着为这个案子核实一下。
https://stackoverflow.com/questions/45435201
复制相似问题