如何在kafka集群中启用多个侦听器



我有一个3节点的Kafka集群。我已经启用了SASL_PLAINTEXT,它与端口6667一起工作正常。现在我想为同一集群中的不同端口启用SSL。我已经启用了信任库和密钥库证书。我从代理端完成了以下配置。

listeners : SSL://localhost:6668
security.inter.broker.protocol : SSL
ssl.key.password : xxxx
ssl.keystore.location : /root/kafka.server.keystore.jks
ssl.keystore.password   : xxxxx
ssl.truststore.location   : /root/kafka.server.truststore.jks
ssl.truststore.password   : xxxxxx
ssl.keystore.type : JKS
ssl.truststore.type : JKS

我也同意了。我得到以下错误

Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /root/kafka.server.keystore.jks of type JKS
Caused by: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /root/kafka.server.keystore.jks of type JKS
Caused by: java.io.FileNotFoundException: /root/kafka.server.keystore.jks (Permission denied)

由java.io.FileNotFoundException引起:/root/kafka.server.keystore.jks(权限被拒绝(

错误跟踪相当清晰。进程无法访问/root/kafka.server.keystore.jks。请注意,该进程通常在不同的用户上运行,我怀疑密钥库是由不同的用户创建的。


确保运行进程的用户有足够的访问权限来读取/root/kafka.server.keystore.jks。实现这一点的一种方法是更改文件的所有权:

sudo chown -R userWhoRunsTheProcess:userGroup /root/kafka.server.keystore.jks

关于这个问题,监听器获取一个地址列表,

listeners : SSL://0.0.0.0:6668,SASL_PLAINTEXT://0.0.0.0;6667

您已经有了sasl,所以我建议使用sasl_ssl

最新更新