Can';t使用SSL确定Kafka中inter.broker.listener.name的设置

Can';t使用SSL确定Kafka中inter.broker.listener.name的设置,ssl,apache-kafka,Ssl,Apache Kafka,我试图使用SSL(TLS)在节点间以及节点与客户端之间配置Kafka节点,但遇到配置问题。卡夫卡版本是2.3.0。我的相关设置是: - KAFKA_BROKER_ID=1 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_LISTENERS=LISTENER_INTERNAL://kafka1:9092,LISTENER_EXTERNAL://kafka1:29092 - KAFKA_ADVERTISED_LISTENE

我试图使用SSL(TLS)在节点间以及节点与客户端之间配置Kafka节点,但遇到配置问题。卡夫卡版本是2.3.0。我的相关设置是:

      - KAFKA_BROKER_ID=1
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_LISTENERS=LISTENER_INTERNAL://kafka1:9092,LISTENER_EXTERNAL://kafka1:29092
      - KAFKA_ADVERTISED_LISTENERS=LISTENER_INTERNAL://kafka1:9092,LISTENER_EXTERNAL://localhost:29091
      - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=LISTENER_INTERNAL:SSL,LISTENER_EXTERNAL:SSL
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181
      - KAFKA_AUTO_CREATE_TOPICS_ENABLE=false
      - KAFKA_SSL_TRUSTSTORE_LOCATION=/var/private/ssl/server.truststore.jks
      - KAFKA_SSL_TRUSTSTORE_PASSWORD=changeit
      - KAFKA_SSL_KEYSTORE_LOCATION=/var/private/ssl/server.keystore.jks
      - KAFKA_SSL_KEYSTORE_PASSWORD=changeit
      - KAFKA_SSL_KEY_PASSWORD=changeit
      - KAFKA_SECURITY_INTER_BROKER_PROTOCOL=SSL
      - KAFKA_SSL_CLIENT_AUTH=required
仅供参考,为了简单起见,我复制了docker compose文件中的设置,该文件实例化了Kafka容器。环境变量将1:1映射到server.properties中的属性。在容器启动期间,这些设置将应用于server.properties文件

当我开始此配置时,我收到以下错误消息:

java.lang.IllegalArgumentException:要求失败:inter.broker.listener.name必须是在advised.listeners中定义的侦听器名称。基于当前配置的侦听器的有效选项为LISTENER\u INTERNAL、LISTENER\u EXTERNAL

当我将inter.broker.listener.name属性设置为INTERNAL_listener、SSL、null或空字符串时,我收到以下错误消息:

org.apache.kafka.common.config.ConfigException:只应设置inter.broker.listener.name和security.inter.broker.protocol中的一个

我在这个问题上花了几个小时。我已经将我的设置与web上的几个示例进行了比较,这些示例本应演示Kafka的SSL配置


有什么想法吗?

我终于想出了如何拥有多个SSL侦听器。我将在这里记录这一点,以防其他人遇到同样的问题,因为多个SSL侦听器的工作示例似乎很少甚至不存在。以下是我的工作配置(仅显示docker compose传递的相关属性):

关键是不要配置KAFKA\u-SECURITY\u-INTER-BROKER\u协议,因为它与KAFKA\u-INTER-BROKER\u-LISTENER\u-NAME密钥互斥


在多个侦听器的情况下,似乎需要结合使用KAFKA\u LISTENER\u SECURITY\u PROTOCOL\u MAPKAFKA\u INTER\u BROKER\u LISTENER\u NAME

我似乎只使用了一个侦听器,而不是两个。仍在试图找到根本原因(并试图理解卡夫卡的Scala代码)。当我有更可靠的消息时,我会报告的。
ALLOW_PLAINTEXT_LISTENER=no
KAFKA_LISTENERS=ISSL://kafka1:9092,OSSL://kafka1:29092
KAFKA_ADVERTISED_LISTENERS=ISSL://kafka1:9092,OSSL://localhost:29092
KAFKA_INTER_BROKER_LISTENER_NAME=ISSL
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=ISSL:SSL,OSSL:SSL
KAFKA_SSL_CLIENT_AUTH=required