linux搭建kafka

前言

本文面向需要快速搭建 Kafka 开发环境的开发者。按照本文步骤操作,你可以在 10 分钟内完成 Kafka 与 Kafka UI 的部署,并立即开始消息的生产与消费调试。

拉取

java 复制代码
 docker pull apache/kafka
  1. 创建目录:mkdir -p /opt/kafka-data
java 复制代码
docker run -d \
  --name kafka \
  -p 9092:9092 \
  -v /opt/kafka-data:/var/lib/kafka/data \
  apache/kafka:latest
  1. UI 安装

docker pull provectuslabs/kafka-ui:latest

docker network create kafka-net

把已有的 Kafka 容器加入网络

docker network connect kafka-net kafka

java 复制代码
docker run -d \
  --name kafka-ui \
  -p 8080:8080 \
  --network kafka-net \
  -e KAFKA_CLUSTERS_0_NAME=local \
  -e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092 \
  provectuslabs/kafka-ui:latest

总结与验证

部署完成后,建议按以下步骤验证环境是否正常:

  • 查看容器状态:执行 docker ps,确认 kafka 与 kafka-ui 两个容器均处于 Up 状态。
  • 访问 UI 地址:在浏览器打开 http://localhost:8080,进入 Kafka UI 控制台。
  • 检查集群连接:在 UI 的 Cluster 页面确认 local 集群显示为在线,且 Broker 数量为 1。

消息生产与消费验证

进入 Kafka 容器,使用官方命令行工具验证消息的生产与消费:

  1. 进入容器并创建主题 test-topic:
bash 复制代码
docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092

预期输出:

text 复制代码
Created topic test-topic.
  1. 启动生产者并发送消息:
bash 复制代码
docker exec -it kafka /opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

在交互提示符后输入以下内容并回车:

text 复制代码
hello kafka
  1. 另开一个终端,启动消费者接收消息:
bash 复制代码
docker exec -it kafka /opt/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

预期输出:

text 复制代码
hello kafka

说明:若容器内脚本路径不同,可先执行 docker exec -it kafka ls /opt/kafka/bin 确认实际路径。消费者成功打印出生产者发送的消息,即说明 Kafka 消息收发功能正常。

常见问题排查

问题现象 可能原因 解决方法
容器启动后立即退出 端口被占用或数据目录权限不足 执行 docker logs kafka 查看日志,调整 -p 端口映射或修改 /opt/kafka-data 目录权限
UI 无法访问 kafka-ui 容器未加入 kafka-net 网络,或 KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS 指向错误 确认 kafka-ui 容器已加入 kafka-net 网络,且 KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS 指向的 kafka:9092 与容器名一致
UI 显示集群离线 kafka 容器未正常运行,或两个容器不在同一网络 检查 kafka 容器是否正常运行,并确认两个容器处于同一网络 kafka-net 中
Kafka 容器日志报错 Connection refused kafka-ui 无法连接 kafka:9092,通常是网络未连通或 Kafka 尚未就绪 确认两个容器在同一网络 kafka-net 中,并等待 Kafka 完全启动后再访问 UI;必要时执行 docker logs kafka 查看 Kafka 启动状态

清理与卸载

如需停止并删除 Kafka 与 Kafka UI 容器,可执行以下命令:

bash 复制代码
docker stop kafka kafka-ui && docker rm kafka kafka-ui

删除自定义网络 kafka-net:

bash 复制代码
docker network rm kafka-net

提示:如需保留 Kafka 数据,请在删除容器前先备份 /opt/kafka-data 目录,例如执行 cp -r /opt/kafka-data /opt/kafka-data-backup。

相关推荐
新*7 分钟前
ES 7.17 三节点 Docker 集群接入 IK 自定义词典:一次从丢插件到热更新的完整排障
运维·elasticsearch·docker·中文分词·ik分词
风翼靓崽15 分钟前
jenkins搭建与简单使用
运维·jenkins
lzx_00212 小时前
Linux 进程(三) 从进程状态到僵尸进程、孤儿进程
linux·服务器
FlightYe13 小时前
音视频修炼之容器与协议(四):RTSP详解
android·linux·ffmpeg·音视频·dash
刘马想放假14 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
kloc15 小时前
聊天室项目入口网关子服务的实现
linux·c++
GeW16 小时前
深圳APEC峰会倒计时:数据库与Linux运维的"隐形考场"
linux
梦到啥说啥17 小时前
Linux网络编程:UDP网络协议
linux·网络协议·udp
无足鸟ICT18 小时前
【RHCA+】ipcrm命令(删除IPC资源)
linux
星恒随风19 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql