apache-kafka - Kafka Streams:Kerberos 票据续订
问题描述
启动 Kafka 流应用程序时,正在使用以下 jaas 文件。但是,流应用程序不会自动更新票证。票证到期后,它会失败,但出现以下异常。我们应该怎么做才能让 Kerberos 票证自动更新?
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
useTicketCache=true
principal="astvy@DEV.ACM.COM"
useKeyTab=true
serviceName="kafka"
keyTab="/home/astvy/astvy.headless.keytab"
renewTGT=true
client=true;
};
错误
Abort sending since an error caught with a previous record (key ED1812 value org.cox.model.HourlyUnit@83e6c99 timestamp 1536165112061) to topic dub_hourlyunit_source1 due to org.apache.kafka.common.errors.SaslAuthenticationException:
An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException:
GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]) occurred when evaluating SASL token received from the Kafka Broker.
Kafka Client will go to AUTHENTICATION_FAILED state.
在进行了如下一些更正(关键更改是将 useTicketCache 设置为 false)后,我们没有看到上述问题再次发生,但由于更新 TGT 设置为 7 天,我们将继续监控问题是否已解决。如果以下更改永久解决了该问题,将再检查几天并对此进行确认。
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
doNotPrompt=true
useTicketCache=false
principal="astvy@DEV.ACM.COM"
useKeyTab=true
serviceName="kafka"
keyTab="/home/astvy/astvy.headless.keytab"
storeKey=true;
};
解决方案
Kafka Streams 使用 Kerberos 和 SSL,就像配置中的任何其他 Kafka 客户端(如生产者和消费者)一样,所以我真的无法想到 Streams 本身内部可能导致无法续订票证的任何问题。
我在 Google 上进行了一些快速搜索,其中一个可能相关:https ://issues.apache.org/jira/browse/HADOOP-10786 ,如果您使用的是 J8。
推荐阅读
- observablehq - 获取 ObservableHQ 单选按钮的标签
- node.js - 使用 NodeJS 创建模板 XLSM 文件的副本?
- unix - 在unix中计算文件行和文件名
- clojure - 规范:部分覆盖地图规范中的生成器
- postgresql - 在 Postgres plpgsql 中运行并发/并行 Db 函数/过程?
- windows - 在 Windows x64 上使用 push/pop 函数调用
- reactjs - 尝试创建 Instagram 视频上传过程
- r - 计算与第二个数据帧 R 匹配的一个数据帧中一组列值的出现次数
- kotlin - Ktor - kotlinx.coroutines.channels.ClosedReceiveChannelException:通道已关闭
- spring - 实现从 url 获取路径变量的选民