You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows端IntelliJ Kafka插件无法连接WSL2 Docker Kafka的问题求助

WSL2 Docker Kafka 无法被Windows端IntelliJ插件连接的解决思路

问题背景

Windows搭配WSL2环境下,在Docker容器部署apache/kafka:4.0.0,WSL2内部执行docker compose up可正常启动服务,且能通过kafka-console-producer.sh和kafka-console-consumer.sh对mytopic进行消息生产与消费,但Windows端IntelliJ的Kafka插件连接172.23.60.159:9092时报错:BdtHostUnavailableException: URL "172.23.60.159:9092" is not available。已尝试禁用WSL2 IPv6、修改IP配置,均未解决问题。

WSL2网络信息:

eth0 : 172.23.60.159
docker : 172.17.0.1

当前docker-compose.yml配置:

version: '3.3'
services:
  kafka-collect:
    image: apache/kafka:4.0.0
    container_name: kafka-collect
    ports:
        - 9092:9092
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: broker,controller
      KAFKA_LISTENERS: PLAINTEXT://172.23.60.159:9092,CONTROLLER://localhost:9093
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.23.60.159:9092
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_NUM_PARTITIONS: 3
      CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk

解决思路

1. 适配跨环境的Kafka监听与公告地址配置

Kafka的LISTENERS和ADVERTISED_LISTENERS需要同时兼容WSL2内部和Windows主机访问:

  • 将KAFKA_LISTENERS修改为PLAINTEXT://0.0.0.0:9092,CONTROLLER://localhost:9093,让容器监听所有网卡,确保端口能被转发到WSL2主机
  • 添加双监听地址,分别对应WSL2内部和Windows主机:
    KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_HOST://0.0.0.0:9094,CONTROLLER://localhost:9093
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.23.60.159:9092,PLAINTEXT_HOST://<Windows主机局域网IP>:9094
    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
    
    同时在ports中新增9094:9094端口映射,Windows端IntelliJ插件连接<Windows主机局域网IP>:9094即可。

2. 排查网络连通性与防火墙

  • 检查Windows防火墙规则:添加入站规则,允许TCP端口9092、9094通过
  • 在Windows CMD中执行Test-NetConnection 172.23.60.159 -Port 9092,测试端口是否能正常连通,确认是否是网络层面的阻断
  • 查看WSL2端口转发状态:执行netsh interface portproxy show all,确认WSL2的9092端口已正确转发到Windows主机

3. 利用WSL2 localhost自动转发特性

WSL2支持将localhost端口自动转发到Windows主机,可简化配置:

  • 修改KAFKA_LISTENERS为PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093
  • 设置KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
  • 保持ports: - 9092:9092配置,Windows端IntelliJ插件直接连接localhost:9092

4. 尝试Docker Host网络模式

WSL2下Docker支持host网络模式,容器直接复用WSL2主机网络,无需端口映射:

  • 在docker-compose.yml中添加network_mode: host,移除原ports配置
  • 修改KAFKA_LISTENERS为PLAINTEXT://0.0.0.0:9092,CONTROLLER://localhost:9093
  • 设置KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://172.23.60.159:9092,Windows端连接该IP:9092即可

内容的提问来源于stack exchange,提问作者Nicolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:33:18