Confluent Kafka S3 Connector连接Kerberos认证Kafka失败问题排查
Kafka S3 Connector Kerberos认证配置问题解决
核心结论
你在connector.properties里配置的security.protocol=SASL_PLAINTEXT、sasl.mechanism=GSSAPI、sasl.kerberos.service.name=kafka本身是正确的Kerberos认证参数,但这些配置是给Connector用的,而Connect Worker连接Kafka集群的配置必须放在worker配置文件(比如connect-standalone.properties)里,不是connector配置中——这就是导致认证未生效的核心原因。
具体调整步骤
- 把Kerberos安全配置从
connector.properties移到connect-standalone.properties中:security.protocol=SASL_PLAINTEXT sasl.mechanism=GSSAPI sasl.kerberos.service.name=kafka - 启动Connect Worker时,确保
KAFKA_OPTS环境变量正确加载,建议启动前显式设置:export KAFKA_OPTS="-Djava.security.krb5.conf=/path/to/krb5.conf -Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf" ./connect-standalone.sh connect-standalone.properties connector.properties - 检查
kafka_client_jaas.conf格式是否正确,示例如下:KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true keyTab="/path/to/your.keytab" principal="kafka-connect@YOUR_KERBEROS_REALM"; };
为什么kafka-console-consumer能正常工作?
因为运行kafka-console-consumer.sh时,你要么是命令行直接指定了安全参数,要么是这些参数已经在全局consumer.properties中配置,而Connect Worker只会读取自身的worker配置文件,不会自动继承Connector里的集群连接参数。
额外排查点
- 确认Connect Worker进程对
krb5.conf和kafka_client_jaas.conf有可读权限 - 启动Worker前先执行
kinit命令验证Kerberos凭据是否能正常获取票据,排除凭据本身的问题 - 查看Connect Worker日志(默认路径
logs/connect.log),里面会有更详细的认证失败细节,比如票据过期、服务名称不匹配等
内容的提问来源于stack exchange,提问作者Jin Ma
相关产品推荐
相关产品推荐

