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

本地Ubuntu通过Docker Compose部署Kafka遇模式配置错误求助

问题描述

在本地Ubuntu系统通过Docker Compose运行Bitnami Kafka时触发错误,提示:

Kafka haven't been configured to work in either Raft or Zookeper mode. Please make sure at least one of the modes is configured

执行docker-compose up后的日志如下:

sudo docker-compose up
Starting kafka-producer_kafka_1 ... done
Attaching to kafka-producer_kafka_1
kafka_1  | kafka 16:06:40.38 INFO  ==> 
kafka_1  | kafka 16:06:40.38 INFO  ==> Welcome to the Bitnami kafka container
kafka_1  | kafka 16:06:40.38 INFO  ==> Subscribe to project updates by watching https://github.com/bitnami/containers
kafka_1  | kafka 16:06:40.38 INFO  ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
kafka_1  | kafka 16:06:40.38 INFO  ==> 
kafka_1  | kafka 16:06:40.39 INFO  ==> ** Starting Kafka setup **
kafka_1  | kafka 16:06:40.46 ERROR ==> Kafka haven't been configured to work in either Raft or Zookeper mode. Please make sure at least one of the modes is configured.
kafka_1  | kafka 16:06:40.49 WARN  ==> Kafka has been configured with a PLAINTEXT listener, this setting is not recommended for production environments.

当前使用的docker-compose.yaml配置:

version: "3"

services:
  kafka:
    image: docker.io/bitnami/kafka:latest
    ports:
      - "9092:9092"
      - "9094:9094"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://0.0.0.0:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://0.0.0.0:9094
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT

volumes:
  kafka_data:
    driver: local
修复方案

Bitnami Kafka必须明确指定使用ZooKeeper模式(传统架构)或KRaft模式(无ZooKeeper架构),二选一即可,以下是两种配置方式:

方式一:使用ZooKeeper模式

添加ZooKeeper服务并配置Kafka连接到该服务:

version: "3"

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:latest
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:latest
    ports:
      - "9092:9092"
      - "9094:9094"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,EXTERNAL://0.0.0.0:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local
  • 新增Bitnami ZooKeeper服务,开启匿名登录(仅适合测试环境)
  • 给Kafka添加KAFKA_CFG_ZOOKEEPER_CONNECT配置,指向ZooKeeper服务地址
  • 移除原配置中的CONTROLLER监听,ZooKeeper模式下无需该配置

方式二:使用KRaft模式(无ZooKeeper)

配置Kafka以KRaft模式运行,需设置节点角色、集群ID等参数:

version: "3"

services:
  kafka:
    image: docker.io/bitnami/kafka:latest
    ports:
      - "9092:9092"
      - "9094:9094"
      - "9093:9093"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://0.0.0.0:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_NODE_ID=1
      - KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuvw
  • 设置PROCESS_ROLES为broker,controller,让当前节点同时承担 broker 和 controller 角色
  • 配置CONTROLLER_QUORUM_VOTERS指定集群投票节点
  • KAFKA_KRAFT_CLUSTER_ID可通过kafka-storage random-uuid命令生成,示例值仅供测试使用
  • 开放9093端口用于控制器节点间通信

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:02:25