Docker Compose一键部署Kafka与Kafka-UI可视化管理面板

Docker Compose一键部署Kafka与Kafka-UI可视化管理面板

提供一个完整的、经过验证的Docker Compose部署方案,包括Kafka集群和Kafka-UI可视化管理面板,以及Python Kafka生产消费示例。

一、部署Kafka与Kafka-UI

1. 创建目录结构

bash 复制代码
mkdir -p kafka-compose && cd kafka-compose

2. 创建docker-compose.yml文件

yaml 复制代码
version: '3.5'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
  
  kafka:
    image: wurstmeister/kafka
    container_name: kafka
    volumes:
      - /etc/localtime:/etc/localtime
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9092
      KAFKA_LISTENERS: INSIDE://0.0.0.0:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT
      KAFKA_LISTENER_NAME_SELECTOR: INSIDE
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    depends_on:
      - zookeeper
  
  kafka-ui:
    image: provectuslabs/kafka-ui
    container_name: kafka-ui
    ports:
      - "8080:8080"
    depends_on:
      - kafka
    environment:
      DYNAMIC_CONFIG_ENABLED: 'true'
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAP_SERVERS: kafka:9092

3. 启动服务

复制代码
docker-compose up -d

4. 验证服务状态

复制代码
docker-compose ps

5. 访问Kafka-UI

打开浏览器访问 http://localhost:8080,即可看到Kafka-UI的登录界面。首次登录无需账号密码,直接进入系统。

二、Python Kafka生产消费示例

1. 安装依赖

复制代码
pip install kafka-python

2. 生产者代码 (producer.py)

python 复制代码
from kafka import KafkaProducer
import json
import time
import random
from datetime import datetime

# 配置Kafka服务器地址
BOOTSTRAP_SERVERS = ['localhost:9092']
TOPIC_NAME = 'test_topic'

def create_producer():
    """创建Kafka生产者"""
    return KafkaProducer(
        bootstrap_servers=BOOTSTRAP_SERVERS,
        value_serializer=lambda v: json.dumps(v).encode('utf-8')
    )

def generate_mock_data():
    """生成模拟数据"""
    user_ids = ['user_001', 'user_002', 'user_003', 'user_004']
    actions = ['click', 'view', 'purchase', 'logout', 'login']
    
    return {
        "user_id": random.choice(user_ids),
        "action": random.choice(actions),
        "timestamp": datetime.now().isoformat(),
        "value": random.randint(1, 100)
    }

def produce_data(producer, topic):
    """持续生产测试数据"""
    try:
        while True:
            # 生成数据
            data = generate_mock_data()
            # 发送消息
            producer.send(topic, value=data)
            print(f"Produced message: {data}")
            time.sleep(1)  # 每秒发送一条
    except KeyboardInterrupt:
        print("Stopping producer...")
    finally:
        producer.close()

if __name__ == "__main__":
    producer = create_producer()
    produce_data(producer, TOPIC_NAME)

3. 消费者代码 (consumer.py)

ini 复制代码
from kafka import KafkaConsumer
import json

# 创建消费者实例并配置参数
consumer = KafkaConsumer(
    'test_topic',  # 订阅的主题名
    bootstrap_servers=['localhost:9092'],  # Kafka服务器地址列表
    group_id='mygroup',  # 消费者组ID
    auto_offset_reset='earliest'  # 当没有初始偏移量或当前偏移量无效时,自动重置偏移量到最早的记录
)

# 消费消息循环
for message in consumer:
    # 解析消息
    data = json.loads(message.value.decode('utf-8'))
    print(f"Consumed message: {data}")

三、使用步骤

  1. 启动Kafka和Kafka-UI

    复制代码
    docker-compose up -d
  2. 运行生产者

    复制代码
    python producer.py
  3. 运行消费者

    复制代码
    python consumer.py
  4. 使用Kafka-UI

    • 访问 http://localhost:8080
    • 在Kafka-UI界面中,您可以查看集群状态、主题、消费者组等信息

四、常见问题解决

  1. Kafka-UI无法访问

    • 确认端口映射是否正确:- "8080:8080"
    • 检查容器日志:docker logs kafka-ui
  2. Python脚本连接问题

    • 确认Kafka服务已启动:docker-compose ps
    • 确认生产者/消费者代码中的bootstrap_servers与实际端口一致(localhost:9092
  3. Kafka服务启动失败

    • 检查Docker日志:docker logs kafka
    • 确认Zookeeper服务已启动(Kafka依赖于Zookeeper)

五、Kafka-UI功能简介

Kafka-UI提供了以下实用功能:

  • 集群监控:查看集群健康状态、版本信息
  • 主题管理:创建、修改、删除主题
  • 消费者组管理:查看和管理消费者组
  • 实时流量监控:查看生产者和消费者的流量
  • 主题详情:查看主题的分区、副本等信息

通过以上步骤,完成Kafka的部署和可视化管理面板的配置,并开始使用Python进行Kafka消息的生产和消费。

相关推荐
通知风来过34 分钟前
docker下得dify得镜像站
运维·docker·容器
独断万古他化38 分钟前
Docker 镜像核心知识:概念、作用与常用命令全解
docker·镜像·image
qq_171520351 小时前
linux服务器springboot(docker)项目word转pdf中文乱码
linux·spring boot·docker·pdf·word
玩电脑的辣条哥1 小时前
Docker Compose 环境变量未生效与镜像标签缺失问题的排查与解决
运维·docker·容器
Wpa.wk1 小时前
Docker容器隔离(namespace+cgroups)-底层原理
运维·docker·容器
修己xj1 小时前
Docker 部署 PicGo:一次配置,随处使用
运维·docker·容器
Ha_To1 小时前
2026.1.29 docker的使用
运维·docker·容器
Hellc0072 小时前
Jenkins 上下游 Job + Docker 镜像部署完整实战(避坑版)
java·docker·jenkins
惊鸿Randy2 小时前
Docker 环境下 PostgreSQL 16 安装 pgvector 向量数据库插件详细教程(Bitnami 镜像)
数据库·docker·postgresql