openEuler2403安装部署Kafbat

文章目录

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集群

3)Kafka启动JMX

4)Docker安装(可选)

5)安装JDK21(可选)

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
  • 创建启动脚本
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

demo-run:https://ui.docs.kafbat.io/quick-start/demo-run

  • 运行 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
相关推荐
匣子15 小时前
Kafka Connect
kafka
半桶水专家1 天前
Kafka Topic(主题)详解
分布式·kafka
半桶水专家1 天前
kafka Partition(分区)详解
分布式·kafka
何双新1 天前
第一讲、Kafka 初识与环境搭建
分布式·kafka·linq
liangsheng_g1 天前
kafka服务端架构总览
架构·kafka
阿登林1 天前
如何使用Kafka处理高吞吐量的实时数据
分布式·kafka
在未来等你1 天前
Kafka面试精讲 Day 6:Kafka日志存储结构与索引机制
大数据·分布式·面试·kafka·消息队列
一叶飘零_sweeeet1 天前
SpringBoot 整合 Kafka 的实战指南
java·spring boot·kafka
1101480750@qq.com1 天前
66关于kafka:consumer_offsets日志不能自动清理,设置自动清理规则
分布式·kafka