Kafka环境部署文档(KRaft模式+UI监控+librdkafka编译)

Kafka环境完整部署文档(KRaft模式+UI监控+librdkafka编译)

一、Kafka服务部署(KRaftZooKeeper模式)

1. 资源下载与存放

官方归档下载地址:https://archive.apache.org/dist/kafka/3.7.0/kafka_2.13-3.7.0.tgz

将安装包放置服务器 /opt 目录下,执行以下部署命令:

bash
# 进入opt目录
cd /opt

# 确认安装包存在
ls -lh kafka_2.13-3.7.0.tgz

# 解压安装包
tar -xzf kafka_2.13-3.7.0.tgz

# 进入Kafka根目录
cd kafka_2.13-3.7.0

image

2. KRaft模式初始化部署

步骤1:生成集群唯一ID

bash
bin/kafka-storage.sh random-uuid

示例输出(自行保存生成的UUID,后续部署使用):9o1eKDn4RnaVMHqgwNBPoA

步骤2:格式化存储目录

替换为自己生成的UUID执行格式化:

bash
bin/kafka-storage.sh format -t 9o1eKDn4RnaVMHqgwNBPoA -c config/kraft/server.properties

 

image

 

 

步骤3:启动Kafka服务

bash
# 前台启动(可查看实时日志,Ctrl+C停止)
bin/kafka-server-start.sh config/kraft/server.properties

# 后台守护进程启动(生产推荐)
bin/kafka-server-start.sh -daemon config/kraft/server.properties

3. 远程访问配置

修改配置文件 /opt/kafka/config/kraft/server.properties,开启外网远程连接:

Plain Text
advertised.listeners=PLAINTEXT://192.168.*.***:9092

4. 服务验证测试

bash
# 进入Kafka目录
cd /opt/kafka_2.13-3.7.0

# 创建测试主题
bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

# 查看所有主题
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

# 单次发送测试消息
echo "hello kafka" | bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

# 交互式批量发送消息(每行一条,Ctrl+C退出)
bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

# 消费全部历史测试消息
bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

image

 

5. 常用运维命令

bash
# 停止Kafka服务
bin/kafka-server-stop.sh

# 查看Kafka进程
ps aux | grep kafka

# 实时查看运行日志
tail -f logs/server.log

# 清空KRaft日志(重置环境)
rm -rf /tmp/kraft-combined-logs

二、Java17环境部署(适配Kafbat UI

版本适配说明:安装web管理程序:kafbat-ui-v1.0.0.jar (自己下载);安装Java17

1. 手动安装OpenJDK17

bash
# 进入opt目录
cd /opt

# 下载JDK17安装包
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.14%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz

# 解压到系统Java目录
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.14_7.tar.gz -C /usr/lib/jvm/

# 单独配置Java17环境(不覆盖系统默认Java)
JAVA17="/usr/lib/jvm/jdk-17.0.14+7/bin/java"

三、Kafbat UI可视化监控部署

1. 前台启动(测试调试用)

bash
cd /opt/kafka_2.13-3.7.0
/usr/lib/jvm/jdk-17.0.14+7/bin/java -jar kafbat-ui-v1.0.0.jar \
  --server.address=0.0.0.0 \
  --server.port=8080 \
  --kafka.clusters.default.bootstrapServers=localhost:9092

2. 后台启动(生产推荐)

8080端口占用时,可替换为8081等空闲端口

bash
# 默认8080端口
nohup /usr/lib/jvm/jdk-17.0.14+7/bin/java -jar kafbat-ui-v1.0.0.jar \
  --server.address=0.0.0.0 \
  --server.port=8080 \
  --kafka.clusters.default.bootstrapServers=localhost:9092 \
  > ui.log 2>&1 &

# 端口占用替换为8081
nohup /usr/lib/jvm/jdk-17.0.14+7/bin/java -jar kafbat-ui-v1.0.0.jar \
  --server.port=8081 \
  --kafka.clusters.default.bootstrapServers=localhost:9092 \
  > ui.log 2>&1

3. 服务验证与访问

bash
# 查看端口监听
netstat -tlnp | grep 8080

# 查看启动日志
tail -f ui.log

启动成功标识:日志输出 Started KafbatUIApplication

浏览器访问地址:http://服务器IP:8080

4. UI启停命令

bash
# 停止UI服务
pkill -f kafbat-ui-v1.0.0.jar

# 重启UI服务
cd /opt/kafka_2.13-3.7.0
nohup /usr/lib/jvm/jdk-17.0.14+7/bin/java -jar kafbat-ui-v1.0.0.jar \
  --server.address=0.0.0.0 \
  --server.port=8080 \
  --kafka.clusters.default.bootstrapServers=localhost:9092 \
  > ui.log 2>&1

5. UI核心功能

菜单模块

核心功能

Topics

查看、创建、删除Kafka主题

Messages

浏览消息内容,支持时间、偏移量过滤查询

Consumer Groups

查看消费者组、消费进度、消息积压量

Brokers

查看Kafka集群节点运行状态

 

image

 

 

四、librdkafka源码编译部署(Linux

1. 源码下载(国内镜像,解决下载失败问题)

下载ZIP压缩包后上传至Linux服务器,解压编译。

2. 完整编译安装流程

bash
# 解压源码包
unzip librdkafka-master.zip
cd librdkafka-master

# 清理旧编译缓存文件
make clean

# 配置编译参数(按需开启组件)
./configure --prefix=/opt/librdkafka --enable-ssl --disable-sasl --disable-lz4 --disable-zstd

# 多线程编译
make -j4

# 安装成品库(核心步骤,分离编译文件与成品文件)
make install

# 刷新系统库缓存
ldconfig

3. 编译结果验证

bash
# 查看库文件
ls /opt/librdkafka/lib

# 查看头文件
ls /opt/librdkafka/include

成功标识:目录存在librdkafka.solibrdkafka++.sordkafka.h 等核心文件

 

image

 

 

4. librdkafka依赖关系说明

  • 核心库:librdkafka
  • 压缩组件:gzip(zlib-dev)snappy(libsnappy-dev)lz4(liblz4-dev)zstd(libzstd-dev)
  • 安全组件:SSL(libssl-dev)
  • 认证组件:SASL(libsasl2-dev)OAUTHBEARER(libcurl-dev)

五、Qt项目适配librdkafka避坑指南

1. win编译坑点总结

  • • vcpkg静态不兼容,会导致MT/MD编译失败,需要在pro文件引入静态库宏定义,不建议使用。
  • • VS2017 NuGet包版本与Qt版本不兼容,编译报错,查清楚后可使用。
  • •使用vcpkg动态包。(修改位置,参考一下命令)
  • image 
  • 编译结果
  • image

  • image

2. 项目配置规范(.pro文件)

Plain Text
# 引入静态库宏定义
DEFINES += LIBRDKAFKA_STATICLIB

# 链接核心依赖库
LIBS += -lrdkafka
LIBS += -llz4

3. 代码引入规范


extern "C" {
#include <rdkafka.h>
}

或者

#include <rdkafkacpp.h>

4. 业务坑点

部分客户端压缩问题:kafka-king工具客户端推送消息会自己压缩,导致接收信息无法解析。

简易使用offsetexplorer工具进行模拟数据发送。(有一个不好的点,使用web端控制Kafbat UI删除完不用的消费者后,它依然保留。强迫症的同学要适应一下...)

 

posted @ 2026-06-18 13:36  暗雨凋零  阅读(0)  评论(0)    收藏  举报