跨主机连接Kafka出现NoBrokersAvailable错误求助
跨主机连接Kafka报错NoBrokersAvailable的排查与解决
核心配置错误
你的Kafka容器配置中,KAFKA_ADVERTISED_LISTENERS的外部监听器地址配置错误:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092,PLAINTEXT_EXTERNAL://222.222.222.22:9093
PLAINTEXT_EXTERNAL应该指向Kafka所在服务器111.111.111.11,而非客户端服务器222.222.222.22。Kafka会将这个地址返回给客户端,客户端需要通过该地址与Kafka建立通信,错误的IP配置会导致客户端无法找到可用的Broker节点。
修正步骤
1. 修改docker-compose.yml配置
更新监听器相关配置,确保外部地址指向Kafka所在服务器:
version: '3' services: zookeeper: image: confluentinc/cp-zookeeper:7.3.2 container_name: zookeeper environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 broker: image: confluentinc/cp-kafka:7.3.2 container_name: broker ports: - "9092:9092" - "9093:9093" depends_on: - zookeeper environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181' KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT,PLAINTEXT_EXTERNAL:PLAINTEXT # 新增KAFKA_LISTENERS确保容器内监听所有网卡 KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_INTERNAL://0.0.0.0:29092,PLAINTEXT_EXTERNAL://0.0.0.0:9093 # 修正外部监听器地址为Kafka服务器IP KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://broker:29092,PLAINTEXT_EXTERNAL://111.111.111.11:9093 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
2. 重启Kafka容器
执行命令让新配置生效:
docker-compose down docker-compose up -d
3. 验证网络连通性
在客户端服务器222.222.222.22上测试端口可达性:
# 使用telnet测试 telnet 111.111.111.11 9093 # 或使用nc测试 nc -zv 111.111.111.11 9093
如果连接失败,需检查:
- Kafka所在服务器的防火墙是否开放9093端口
- 云服务器安全组是否允许222.222.222.22访问9093端口
- Docker端口映射状态:执行
docker ps,确认broker容器的9093端口显示为0.0.0.0:9093->9093/tcp
4. 确认Python客户端配置
你的app.py中bootstrap_servers配置为111.111.111.11:9093是正确的,无需修改。若之前连接过错误地址,建议重启Python应用清除客户端缓存。
额外验证
- 检查容器运行状态:
docker-compose ps,确保zookeeper和broker均处于Up状态 - 查看Kafka日志确认监听器生效:
docker logs broker | grep "Listening for connections",应能看到Listening for connections on PLAINTEXT_EXTERNAL://0.0.0.0:9093的日志输出
内容的提问来源于stack exchange,提问作者Miguel Payá
相关产品推荐
相关产品推荐

