文章目录
- [openEuler2403安装部署Kafka with KRaft](#openEuler2403安装部署Kafka with KRaft)
- 一、前言
- 二、正文
-
- 1.基础环境
- [2.Kafbat UI安装](#2.Kafbat UI安装)
openEuler2403安装部署Kafka with KRaft
一、前言
1.简介
Kafbat UI 是一款多功能、高效、轻量级且灵活的 Web 界面工具,专为监控和管理 Apache Kafka® 集群而设计。它由开发者打造、为开发者服务,提供直观的操作体验,帮助用户:实时洞察数据流、快速定位并解决问题、保障集群持续高性能运行。
2.环境
- Linux 发行版: openEuler-24.03-LTS-SP2-x86_64-dvd.iso
- Kafbat UI 版本:1.3.0
Kafbat 官网:https://kafbat.io/
Kafbat UI - GitHub:https://github.com/kafbat/kafka-ui
Kafbat UI 用户手册:https://ui.docs.kafbat.io/
Kafbat UI - JAR包启动:https://ui.docs.kafbat.io/development/building/without-docker#run_without_docker_quickly
demo-run:https://ui.docs.kafbat.io/quick-start/demo-run
kraft-mode-±multiple-brokers:https://ui.docs.kafbat.io/configuration/complex-configuration-examples/kraft-mode-±multiple-brokers
openEuler2403安装部署Kafka:https://blog.csdn.net/u011424614/article/details/151195572
openEuler2403安装Docker:https://blog.csdn.net/u011424614/article/details/151089207
openEuler常用操作指令:https://blog.csdn.net/u011424614/article/details/150942929
openEuler中LVM调整实现home与root分区空间平衡:https://blog.csdn.net/u011424614/article/details/150961763
openEuler安装部署JDK11:https://blog.csdn.net/u011424614/article/details/150961633
openEuler2403安装部署MySQL8:https://blog.csdn.net/u011424614/article/details/150966094
VirtualBox安装openEuler24.03:https://blog.csdn.net/u011424614/article/details/150725588
VMware安装openEuler24.03:https://blog.csdn.net/u011424614/article/details/150723134
openEuler2403安装Docker:https://blog.csdn.net/u011424614/article/details/151089207
二、正文
1.基础环境
1)关闭防火墙
- 可禁用防火墙,或配置开放的端口,后者比较安全
cmd
# 关闭防火墙
systemctl stop firewalld.service
# 开机禁用防火墙
systemctl disable firewalld.service
# 防火墙状态
systemctl status firewalld.service
2)安装Kafka集群
- 具体操作参考:《openEuler2403安装部署Kafka》
3)Kafka启动JMX
- 具体操作参考:《openEuler2403安装部署Kafka》
4)Docker安装(可选)
- 具体操作参考:《openEuler2403安装Docker》
5)安装JDK21(可选)
- 安装参考:《openEuler安装部署JDK11》
- 这里安装 OpenJDK 21
cmd
dnf install java-21-openjdk-devel
6)创建目录
- 创建安装目录
cmd
mkdir /opt/Kafbat && cd /opt/Kafbat
2.Kafbat UI安装
1)JAR包启动
Kafbat UI - JAR包启动:https://ui.docs.kafbat.io/development/building/without-docker#run_without_docker_quickly

- 新增配置 application-local.yml
cmd
cat > /opt/kafbat/application-local.yml <<EOF
# ==================== 基础配置 ====================
server:
port: 8080
spring:
jmx:
enabled: true # 启用JMX监控
security:
# UI 登录用户和密码
user:
name: admin
password: admin@123456
# ==================== Kafka集群配置 ====================
kafka:
clusters:
- name: kraft-cluster # 集群别名
bootstrapServers: 192.168.249.121:9092,192.168.249.122:9092,192.168.249.123:9092 # 替换为实际Broker地址
metrics:
type: JMX
port: 9999 # 与Broker JMX端口一致
jmx:
# 监控KRaft Controller关键指标
extraMappings:
- pattern: 'kafka.controller:type=KafkaController,name=*'
attribute: 'Value'
properties: # KRaft模式特殊参数
security.protocol: PLAINTEXT # 若启用SSL需调整
sasl.mechanism: PLAIN
# ==================== 安全与权限 ====================
auth:
#type: DISABLED # 测试环境禁用认证
type: LOGIN_FORM
# ==================== 日志配置 ====================
logging:
level:
root: INFO
io.kafbat.ui: DEBUG # 调试Kafbat UI内部逻辑
reactor.netty.http.server.AccessLog: INFO
EOF
- 启动前,需要先安装 JDK 21
cmd
java \
-Dspring.config.additional-location=/opt/kafbat/application-local.yml \
--add-opens java.rmi/javax.rmi.ssl=ALL-UNNAMED \
-jar /opt/kafbat/api-v1.3.0.jar
- 浏览器访问:http://192.168.249.124:8080/
- 输入配置文件中的用户名和密码

- 创建启动脚本
cmd
cat > /opt/kafbat/start-kafbat.sh <<EOF
nohup java \
-Dspring.config.additional-location=/opt/kafbat/application-local.yml \
--add-opens java.rmi/javax.rmi.ssl=ALL-UNNAMED \
-jar /opt/kafbat/api-v1.3.0.jar > /opt/kafbat/kafbat.log 2>&1 &
echo "Kafbat UI started. Logs at /opt/kafbat/kafbat.log"
EOF
- 创建关停脚本
cmd
cat > /opt/kafbat/stop-kafbat.sh <<EOF
PID=\$(ps -ef | grep "api-v1.3.0.jar" | grep -v grep | awk '{print \$2}')
if [ -n "\$PID" ]; then
kill -15 \$PID && echo "Stopped process \$PID"
else
echo "Kafbat UI is not running"
fi
EOF
- 授予执行权限
cmd
chmod +x start-kafbat.sh stop-kafbat.sh
- 运行脚本
cmd
cd /opt/kafbat
# 启动
sh start-kafbat.sh
# 关闭
sh stop-kafbat.sh
# 查看端口
netstat -tunlp |grep 8080
- 查看日志
cmd
# 实时监控日志
tail -f /opt/kafbat/kafbat.log
# 查看最新N行日志
tail -n 200 /opt/kafbat/kafbat.log
# 搜索关键字日志
grep "ERROR" /opt/kafbat/kafbat.log
2)Docker启动
- 启动前,需要先安装 Docker
(1)运行kafka-ui的DEMO
- 运行 kafka-ui DEMO【使用南大镜像加速下载】
cmd
# 后台静默运行模式
docker run -d -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true --name kafbat-ui ghcr.nju.edu.cn/kafbat/kafka-ui
# 该命令会向容器发送 SIGTERM 信号,允许应用程序保存状态后退出
docker stop kafbat-ui
# 强制停止容器
docker kill kafbat-ui
# 停止并删除容器
docker rm -f kafbat-ui
# 重启容器
docker restart kafbat-ui
# 查看容器资源占用
docker stats kafbat-ui
# 开启自启动:新建容器时配置
docker run -d -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true --name kafbat-ui --restart=always ghcr.nju.edu.cn/kafbat/kafka-ui
# 开机自启动:为现有容器更新策略
docker update --restart=always kafbat-ui
# 实时查看日志
docker logs -f kafbat-ui
# 查看最近 N 行日志
docker logs --tail=100 kafbat-ui
# 查看日志并过滤关键字
docker logs kafbat-ui | grep "ERROR"
- 浏览器访问:http://192.168.249.124:8080/
- 输入配置文件中的用户名和密码
- 页面配置
- 输入:集群名称 和 Kafka Broker 地址+端口

- 选择:JMX
- 输入:JMX 端口
- 点击:【Submit】按钮

- 提交成功后,刷新页面

(2)docker配置文件启动
kraft-mode-±multiple-brokers:https://ui.docs.kafbat.io/configuration/complex-configuration-examples/kraft-mode-±multiple-brokers
cmd
cat > /opt/kafbat/docker-compose.yml <<EOF
services:
kafbat-ui:
image: ghcr.nju.edu.cn/kafbat/kafka-ui:latest # 官方最新镜像
container_name: kafbat-ui-local
ports:
- "8080:8080" # UI访问端口(宿主机:容器)
environment:
# 集群基础配置(必填)
- KAFKA_CLUSTERS_0_NAME=local-kafka-cluster # 集群名称(自定义)
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=192.168.249.121:9092,192.168.249.122:9092,192.168.249.123:9092 # 本地Kafka集群Broker地址
# 认证配置(与本地Jar包配置一致)
- AUTH_TYPE=LOGIN_FORM # 表单登录模式
- SPRING_SECURITY_USER_NAME=admin # 登录用户名
- SPRING_SECURITY_USER_PASSWORD=admin@123456 # 登录密码
# JMX监控配置(与本地Jar包配置一致)
- KAFKA_CLUSTERS_0_METRICS_TYPE=JMX
- KAFKA_CLUSTERS_0_METRICS_PORT=9999 # JMX端口
# 日志配置(调试模式)
- LOGGING_LEVEL_IO_KAFBAT_UI=DEBUG
restart: unless-stopped # 容器退出时自动重启(非手动停止情况)
networks:
- kafbat-network
networks:
kafbat-network:
driver: bridge # 默认桥接网络(适用于单机部署)
EOF
- 服务管理
cmd
# 启动并后台运行容器
docker compose -f /opt/kafbat/docker-compose.yml up -d
# 查看当前目录下 docker-compose.yml 中所有服务的日志
docker compose logs -f kafbat-ui
# 暂停所有运行中的服务容器(进程暂停,状态保存,不释放资源)
docker compose pause kafbat-ui
# 恢复被暂停的服务容器,使其继续运行
docker compose unpause kafbat-ui
# 停止所有服务容器(进程终止,但容器本身不删除,可通过 start 重启)
docker compose stop kafbat-ui
# 依次停止并重新启动所有服务容器(适用于配置更新后需要生效的场景)
docker compose restart kafbat-ui
# 显示当前 docker-compose.yml 中所有服务的容器状态,包括容器ID、名称、运行状态、端口映射
docker compose ps
# 停止并删除服务容器及网络
docker compose -f /opt/kafbat/docker-compose.yml down
- 查看端口
cmd
netstat -tunlp |grep 8080
- 浏览器访问:http://192.168.249.124:8080/
- 输入配置文件中的用户名和密码