Docker部署ksqlDB-server报Failed to get Kafka cluster information错误求助
部署ksqlDB连接Kafka超时问题修复方案
核心问题
你所有容器都运行在kafka自定义Docker网桥中,ksqlDB容器配置的KSQL_BOOTSTRAP_SERVERS=localhost:9092指向的是ksqlDB容器自身,而非Kafka容器,因此无法连通Kafka集群,触发获取集群信息超时报错。
修复步骤
- 删除已创建的异常ksqlDB容器
docker rm -f ksqldb_c
- 用Kafka容器名作为服务地址重新启动ksqlDB,同一Docker网络下可直接通过容器名互相访问:
docker run -d --network=kafka --name=ksqldb_c -p 8088:8088 -e KSQL_BOOTSTRAP_SERVERS=kafka_c:9092 -e KSQL_LISTENERS=http://0.0.0.0:8088/ -e KSQL_SERVICE_ID=ksql_service_2_ confluentinc/ksqldb-server:0.20.0
- 验证启动结果:等待30秒后执行以下命令,出现
INFO Server started, listening for requests...即代表启动成功
docker logs ksqldb_c | grep "Server started"
可选排查(修改后仍报错时操作)
如果调整地址后仍无法连接,需补充Kafka的内部监听器配置,先重新创建Kafka容器:
# 删除原有Kafka容器 docker rm -f kafka_c # 重新创建支持内外网访问的Kafka容器 docker run -d --network=kafka --name=kafka_c -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT=zookeeper_c:2181 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092,PLAINTEXT://kafka_c:9092 -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT -e KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT confluentinc/cp-kafka
等Kafka完全启动后,再重新执行ksqlDB启动命令即可。
内容的提问来源于stack exchange,提问作者DejaVuMan
相关产品推荐
相关产品推荐

