CMAK集群无可用Broker,创建Topic报错求助
问题解决:CMAK中Kafka集群无可用Broker,创建Topic失败
问题原因
你的Docker Compose配置里,Kafka的KAFKA_ADVERTISED_HOST_NAME设置为宿主机IP192.168.0.1,但CMAK(kafka-manager)运行在Docker容器内部,无法通过这个地址访问Kafka Broker,导致集群识别不到可用Broker,进而创建Topic时出现replication factor: 1 larger than available brokers 0错误。
解决方案
修改Docker Compose中的Kafka服务配置,使用多监听器配置区分容器内部和外部的访问地址:
修改后的Docker Compose配置
version: '3' services: zookeeper: image: wurstmeister/zookeeper container_name: zookeeper ports: - "2181:2181" environment: ZOO_MY_ID: 1 kafka: image: wurstmeister/kafka container_name: kafka ports: - "9092:9092" environment: # 配置内部和外部监听地址 KAFKA_LISTENERS: INSIDE://kafka:9093,OUTSIDE://0.0.0.0:9092 # 注册到ZooKeeper的监听地址,容器内部用kafka:9093,外部用宿主机IP:9092 KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://192.168.0.1:9092 # 映射监听地址的安全协议 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT # 指定Broker间通信使用内部监听地址 KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 kafka_manager: image: kafkamanager/kafka-manager container_name: kafka-manager restart: always ports: - "9000:9000" environment: ZK_HOSTS: "zookeeper:2181" APPLICATION_SECRET: "random-secret"
操作步骤
- 停止并删除现有容器:
docker-compose down
- 启动新配置的容器:
docker-compose up -d
- 等待1-2分钟,让Kafka和ZooKeeper完全启动。
- 打开CMAK页面,刷新集群信息或重新添加集群(ZooKeeper地址填
zookeeper:2181),此时应该能看到可用的Broker节点。 - 再次尝试创建Topic,即可正常完成。
额外排查步骤
如果问题仍然存在,检查以下内容:
- 查看Kafka容器日志,确认没有启动错误:
docker logs kafka
- 确认ZooKeeper容器正常运行:
docker logs zookeeper
内容的提问来源于stack exchange,提问作者Erik hoeven
相关产品推荐
相关产品推荐

