【问题标题】:Kafka Docker Image wont Run when Security protocol is PLAINTEXT当安全协议为 PLAINTEXT 时,Kafka Docker Image 不会运行
【发布时间】:2021-07-17 00:15:52
【问题描述】:

我对 Docker 很陌生,我正在尝试运行一个具有纯文本安全协议的 Kafka docker 映像。我知道这个安全协议存在并且有效,因为我可以让我的容器在包含定义环境变量的撰写文件的目录中使用docker-compose up 运行。但是,我很难通过命令行运行图像。

我在终端运行这个命令:

docker run -e KAFKA_ZOOKEEPER_CONNECT='zookeeper:2181' -e KAFKA_LISTENERS='PLAINTEXT://:81543,PLAINTEXT_HOST://:33333' --name kafka sha256:c3b05sdaw30e711c09b925e52991cc0a9c0c163016fhd47ae39840f255f490b2

我的撰写文件中的我的 kafka 环境变量是:

environment:
  KAFKA_LISTENERS: PLAINTEXT://:81543,PLAINTEXT_HOST://:33333
  KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:81543,PLAINTEXT_HOST://host.docker.internal:33333
  KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

堆栈跟踪是:

java.lang.IllegalArgumentException: Error creating broker listeners from ''PLAINTEXT://:81543,PLAINTEXT_HOST://:33333'': No security protocol defined for listener 'PLAINTEXT
        at kafka.utils.CoreUtils$.listenerListToEndPoints(CoreUtils.scala:274)
        at kafka.server.KafkaConfig.$anonfun$listeners$1(KafkaConfig.scala:1680)
        at kafka.server.KafkaConfig.listeners(KafkaConfig.scala:1679)
        at kafka.server.KafkaConfig.advertisedListeners(KafkaConfig.scala:1707)
        at kafka.server.KafkaConfig.validateValues(KafkaConfig.scala:1778)
        at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1756)
        at kafka.server.KafkaConfig.<init>(KafkaConfig.scala:1312)
        at kafka.server.KafkaServerStartable$.fromProps(KafkaServerStartable.scala:34)
        at kafka.Kafka$.main(Kafka.scala:68)
        at kafka.Kafka.main(Kafka.scala)
Caused by: java.lang.IllegalArgumentException: No security protocol defined for listener 'PLAINTEXT
        at kafka.cluster.EndPoint$.$anonfun$createEndPoint$2(EndPoint.scala:48)
        at scala.collection.immutable.Map$Map4.getOrElse(Map.scala:530)
        at kafka.cluster.EndPoint$.securityProtocol$1(EndPoint.scala:48)
        at kafka.cluster.EndPoint$.createEndPoint(EndPoint.scala:53)
        at kafka.utils.CoreUtils$.$anonfun$listenerListToEndPoints$6(CoreUtils.scala:271)
        at scala.collection.StrictOptimizedIterableOps.map(StrictOptimizedIterableOps.scala:99)
        at scala.collection.StrictOptimizedIterableOps.map$(StrictOptimizedIterableOps.scala:86)
        at scala.collection.mutable.ArraySeq.map(ArraySeq.scala:38)
        at kafka.utils.CoreUtils$.listenerListToEndPoints(CoreUtils.scala:271)
        ... 9 more

【问题讨论】:

    标签: docker apache-kafka


    【解决方案1】:

    看起来我必须像这样在命令中定义我的所有配置变量:

    https://www.confluent.io/blog/kafka-client-cannot-connect-to-broker-on-aws-on-docker-etc/

    docker run --network=rmoff_kafka --rm --detach --name broker \
               -p 9092:9092 \
               -e KAFKA_BROKER_ID=1 \
               -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
               -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
               -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
               confluentinc/cp-kafka:5.5.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      相关资源
      最近更新 更多