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,确认 kafkakafka-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

相关推荐
团子股股东峥哥1 小时前
day35-RHEL-管理SELinux的安全性
linux·运维·服务器
蓝速科技1 小时前
涉外酒店前台双屏翻译机落地应用指南
运维·人工智能·科技·语言模型·自然语言处理·语音识别
letisgo51 小时前
JAVA 高级进阶10篇《消息队列实战:RocketMQ/Kafka选型与“不丢不重有序“三连解》
java·面试·kafka·消息队列·rocketmq
Databuff1 小时前
PuTTY 工具的开源平替来了,免费使用
运维·开源·ssh·开源软件
无小道1 小时前
fdisk,dmesg,hdparm,swapon命令小记(linux)
linux·运维·服务器
雾隐隐o1 小时前
Kafka 集群搭建:从核心概念到多节点部署
分布式·kafka
没文化的阿浩2 小时前
【Linux系统】进程状态详解
android·linux·c++·c
暖核2 小时前
华为云实战:基于WordPress的企业网站上云与高可用架构部署
运维·华为云
是店小二呀2 小时前
AdGuard Home 部署实战:Linux/Windows 安装、DNS 配置与固定公网管理
linux·运维·windows