Docker容器内Kafka无法被外部OffsetExplorer访问的问题与解决
问题:Docker Compose部署的Kafka无法被外部OffsetExplorer访问
我通过Docker Compose部署了Kafka服务,初始配置如下:
version: "2" services: zookeeper: image: 'bitnami/zookeeper:latest' container_name: zookeeper ports: - 2181:2181 environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: image: 'bitnami/kafka:2.4.1' container_name: kafka ports: - 29092:9092 environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_LISTENERS=INTERNAL://kafka:9092,EXTERNAL_SAME_HOST://localhost:29092 - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9092,EXTERNAL_SAME_HOST://localhost:29092 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,EXTERNAL_SAME_HOST:PLAINTEXT - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=100 depends_on: - zookeeper
Kafka启动正常,同一Docker Compose内的其他服务容器可以正常访问,但外部主机运行的OffsetExplorer连接时,提示localhost:29092对应的Broker不可达(ZooKeeper连接正常)。
我的需求是:保留9092端口供容器内服务以kafka:9092地址访问Kafka,同时新增一个监听端口允许外部主机访问,但初始的端口映射配置未生效。
解决方案
关键问题:KAFKA_CFG_LISTENERS配置必须使用0.0.0.0,使用localhost或127.0.0.1会导致外部无法建立连接。修改后的完整Docker Compose配置如下,此时外部主机的OffsetExplorer可正常连接容器内的Kafka:
version: "2" services: zookeeper: image: 'bitnami/zookeeper:latest' container_name: zookeeper ports: - 2181:2181 environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: image: 'bitnami/kafka:2.4.1' container_name: kafka ports: - '29092:29092' environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_LISTENERS=INTERNAL://0.0.0.0:9092,OUTSIDE://0.0.0.0:29092 - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://kafka:9092,OUTSIDE://localhost:29092 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:PLAINTEXT,OUTSIDE:PLAINTEXT - KAFKA_INTER_BROKER_LISTENER_NAME=INTERNAL - KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 depends_on: - zookeeper
核心配置调整说明:
- 端口映射改为
29092:29092,对应新增的外部专属监听端口 KAFKA_CFG_LISTENERS中两个监听均绑定0.0.0.0,确保容器内、外部请求都能被接收KAFKA_CFG_ADVERTISED_LISTENERS分别指定:容器内服务使用kafka:9092,外部主机使用localhost:29092- 新增
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1,适配单Broker场景下的偏移量主题配置
内容的提问来源于stack exchange,提问作者Jin Ma
相关产品推荐
相关产品推荐

