docker 容器中的 Kafka 未在偏移量资源管理器中显示主题

Kafka from docker container not showing topics in offset explorer

您好,我在设置 kafka / docker 以显示所有主题时遇到问题,这是用于测试/开发环境。我对 Kafka 和 docker 很陌生,所以我的一些术语可能不适用

设置: 自定义 Windows 应用程序 - WSL (Debian) with Kafka / zoo-keeper- container - Offset explorer.

我在 offset explorer 中获得了绿色集群连接,但没有主题:

不过我们确实看到了经纪人。

Docker 容器克隆自: https://github.com/wurstmeister/kafka-docker/blob/master/README.md

Windows主机I.P是192.168.1.143.

从windows cmd我可以看到WSL有IP 172.25.224.1.

通过附加到 docker 容器上的 bash shell docker exec -t -i 64a637cea4b9 /bin/bash 我可以 运行 ifconfig 并获得内部 IP 172.18 .0.2.

从 docker 容器我可以 ping 主机 192.168.1.143。

我可以从 WSL ping 容器

从 windows 主机我可以固定 WSL 172.25.224.1。

从 windows 主机我无法 ping 容器 172.18.0.2。 我不确定这是否相关,但我的蜘蛛感觉对这种 ping 失败有点刺痛。

我对 docker-compose.yml 做了一些修改。

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    restart: unless-stopped

  kafka:
    container_name: kafka-container
    build: .
    ports:
      - "9092"
    environment:
      DOCKER_API_VERSION: 1.22
      KAFKA_ADVERTISED_HOST_NAME: 192.168.1.143
      AUTO_CREATE_TOPICS_ENABLE: 'true'
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

我还尝试编辑 docker 容器中的两个配置文件,/opt/kafka_2.13-2.8.1/config/server.properties 和 opt/kafka_2.13 -2.8.1/config/kraft/server.properties 添加行:

auto.create.topics.enable=true

我读到这可能有帮助吗?

我没有想法,因为 offset explorer 中的连接似乎表明我们有某种形式的连接,但显然不完整。我不太了解它发生了什么,所以它可能非常简单。感谢您提供任何可能的帮助!

所以 WSL 和 windows 之间似乎存在网络问题。最后,我直接将 kafka 安装到 WLS 中,但仍然有问题。解决方案是四倍。

  1. 在WLS中更喜欢IV4

    导出 KAFKA_OPTS="-Djava.net.preferIPv4Stack=True" 我最终把它放在 bin/zookeeper-server-start.sh 和 bin/kafka-server-start.sh

    的开头
  2. 通过添加/设置 reg 设置在 windows 中首选 IPV4

    New-ItemProperty“HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters”-名称“DisabledComponents”-值 0x20-PropertyType“Dword”

或者如果注册码已经存在

Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\" -Name "DisabledComponents" -Value 0x20

需要重新启动才能生效。

  1. WLS端口转发 使用 [此处][1] 中的脚本并修改端口。

  2. 确保 config/server.properties 中的 advertised.hosts.name 设置为等于 ifconfig 返回的 WSL 内部 IP。

在此之后,我可以通过 python 脚本或手动使用 kafkacat 添加我的主题。 [1]: https://dev.to/vishnumohanrk/wsl-port-forwarding-2e22