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。

相关推荐
Canmag 兴隆磁性6 小时前
中大型钕铁硼产品的磁通测量与自动分选:一条产线自动化的工程实现思路
运维·学习·自动化·永磁材料
xuefeiniao8 小时前
PHP2Shell漏洞修复
运维·服务器·php
水饺编程8 小时前
第2章:Linux 基础,切换到超级用户
linux·c语言·汇编
便利店10249 小时前
系统活动一抓留存!深入 Linux C/C++ 调试工具之 sysdig
linux·运维·服务器·sysdig
qetfw9 小时前
Bash 变量:export、位置参数与默认值展开验证
linux·开发语言·chrome·bash
智能运维指南10 小时前
企业 IT 运维自动化平台怎么选?从场景匹配到 POC 验证的完整评估框架
运维·自动化·自动化运维·嘉为蓝鲸
其实防守也摸鱼10 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
toooooop810 小时前
CentOS 7 内核 3.10.0-1160.119.1 升级指南
linux·运维·centos
云飞云共享云桌面10 小时前
广东东莞制造工厂10人共享一台三维设计服务器
运维·服务器·3d·自动化·制造
码少女11 小时前
Linux——UDP协议和TCP协议
linux·网络·udp·tcp