Kafka UI 无法连接到 Broker

问题描述 投票:0回答:1

我是容器化新手。我正在尝试设置我的本地环境,我的 java 应用程序想要连接到 Kafka。无法使用 Docker,所以决定使用 Podman。我有三个容器在同一网络上运行,每个容器用于 Kafka、Zookeeper 和 kafka UI。我用的是macOS。

这是我正在使用的 Podman 命令:-

创建网络:

podman network create kafka-network --driver bridge

启动 Zookeper:

podman run --name zookeeper-server -p 2181:2181 --network kafka-network -e ALLOW_ANONYMOUS_LOGIN=yes docker.io/bitnami/zookeeper:3.8

启动 Kafka:

podman run --name kafka-server --network kafka-network -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR:1 -p 9092:9092 docker.io/bitnami/kafka:3.4

启动 Kafka-ui:

podman run -it --name kafka-ui -p 9090:8080 --network kafka-network -e KAFKA_CLUSTERS_0_NAME=local -e KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper-server:2181 -e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka-server:9092 -e DYNAMIC_CONFIG_ENABLED=true docker.io/provectuslabs/kafka-ui:latest

java应用程序使用的Url:PLAINTEXT://localhost:9092

Java 应用程序能够在分配分区时进行连接,但 kafka ui 日志显示“无法建立与节点 1 (localhost/127.0.0.1:9092) 的连接。代理可能不可用。”

如果我在 podman 命令中将 localhost 更改为 kafka-server,在该命令中我正在启动 kafka,那么 Kafka UI 可以正常工作,但消费者不会订阅 java 应用程序中的分区。

不知道为什么我会看到这种奇怪的行为。欢迎额外的解释,因为我试图理解这里环境变量的目的。谢谢

docker docker-compose apache-zookeeper podman container-image
1个回答
0
投票

虽然是Docker,但我在想尝试的时候也有同样的经历

kafka-ui
,直到今天早上才开始工作。由于尝试了不同的 UI,那里的一些配置暗示
broker:9092
也应该作为引导服务器提供。

为了澄清,我使用 Docker Compose 与 3 个服务,

zookeeper
broker
kafka-ui
,如下所示:

---
version: '2'

services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.3.0
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  broker:
    image: confluentinc/cp-kafka:7.3.0
    hostname: broker
    container_name: broker
    depends_on:
      - zookeeper
    ports:
      - "29092:29092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:9092,PLAINTEXT_HOST://localhost:29092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TOOLS_LOG4J_LOGLEVEL: ERROR

  kafka-ui:
    image: provectuslabs/kafka-ui
    hostname: kafka-ui
    container_name: kafka_ui
    depends_on:
    - broker
    ports:
    - "8080:8080"
    environment:
      DYNAMIC_CONFIG_ENABLED: 'true'
      KAFKA_CLUSTERS_0_NAME: kafkacluster
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: 'broker:29092,localhost:29092,localhost:9092,broker:9092'

在上面的配置中,我之前有

broker:29092
但没有
broker:9092
。添加
broker:9092
后,它就活了!
(^^,)

为了验证这确实是解决方案,我恢复到没有

broker:9092
的配置,并且再次遇到了与以前相同的问题。

我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.