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
相关推荐
武子康1 小时前
大数据-266 实时数仓-Canal + Kafka 实现 MySQL 数据库变更实时捕获
大数据·后端·kafka
creator_Li1 小时前
Kafka 全面技术笔记
笔记·学习·kafka
青春不流名3 小时前
kafka 集成OAUTHBEARER认证的例子
分布式·kafka
洛豳枭薰3 小时前
kafka重平衡导致的消息重复消费或者消息丢失
分布式·kafka
架构师老Y1 天前
011、消息队列应用:RabbitMQ、Kafka与Celery
python·架构·kafka·rabbitmq·ruby
talen_hx2961 天前
《kafka核心源码解读》学习笔记 Day 02
笔记·学习·kafka
lifallen1 天前
如何保证 Kafka 的消息顺序性?
java·大数据·分布式·kafka
真实的菜1 天前
Kafka 2.x vs 3.x,我为什么选择升级?
kafka
时光追逐者1 天前
分享四款开源且实用的 Kafka 管理工具
分布式·kafka·开源
Rick19931 天前
rabbitmq, rocketmq, kafka这三种消息如何分别保住可靠性,顺序性,以及应用场景?
kafka·rabbitmq·rocketmq