openEuler2403安装部署Kafka

发布于:2025-09-05 ⋅ 阅读:(35) ⋅ 点赞:(0)

openEuler2403安装部署Kafka with KRaft

一、前言

1.简介

Apache Kafka 是一个开源分布式事件流平台,已被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。

KRaft(Kafka Raft)模式是从 Apache Kafka 2.8.0 版本开始引入,KRaft 旨在摒弃对 ZooKeeper 的依赖。在以前的版本中,Apache Kafka 依赖于 ZooKeeper 来管理集群元数据和协调集群,但这增加了系统的复杂性和运维负担。KRaft 模式通过引入 Raft 协议直接在 Kafka 内部处理这些功能,从而简化了 Kafka 的架构和部署过程。

2.架构

ARCHITECTURE - Apache Kafka

在这里插入图片描述

3.环境

  • Linux 发行版: openEuler-24.03-LTS-SP2-x86_64-dvd.iso
  • JDK 版本:Alibaba Dragonwell Extended Edition-11.0.27.24+6-GA
  • Kafka 版本:3.9.1

Kafka 官网:https://kafka.apache.org/

intro - Apache Kafka:https://kafka.apache.org/intro

Kafka QuickStart:https://kafka.apache.org/documentation/#quickstart

Kafbat UI 用户手册:https://ui.docs.kafbat.io/

openEuler2403安装部署Kafbat:https://blog.csdn.net/u011424614/article/details/151195306

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

二、正文

1.部署服务器

  • Kafka 默认端口
端口 描述
9092 Kafka Clients
9093 Kafka Control Plane
8083 Kafka Connect
8081 Schema Registry
8082 REST Proxy
8088 ksqlDB
  • 服务器
  • 单机部署使用:192.168.249.121
  • 集群部署使用:192.168.249.121、192.168.249.122、192.168.249.123
IP 节点部署
192.168.249.121 Kafka 节点
192.168.249.122 Kafka 节点
192.168.249.123 Kafka 节点
192.168.249.124 Know Streaming 管控平台 【CentOS7】

2.基础环境

1)JDK 安装部署

集群部署:需要在 3 台 Kafka 服务器上安装JDK

  • 安装参考:《openEuler安装部署JDK11
  • JDK 版本:Alibaba Dragonwell Extended Edition-11.0.27.24+6-GA
  • 安装目录:/opt/java/dragonwell-11.0.27.24+6-GA

2)关闭防火墙

集群部署:在 4 台服务器上执行

  • 可禁用防火墙,或配置开放的端口,后者比较安全
# 关闭防火墙
systemctl stop firewalld.service
# 开机禁用防火墙
systemctl disable firewalld.service
# 防火墙状态
systemctl status firewalld.service

3.单机部署

在 121 服务器上执行

1)下载软件包

  • 创建安装目录,并下载
mkdir /opt/kafka && cd /opt/kafka

# 下载软件包,如果 wget 无法下载,可使用浏览器或迅雷下载
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz --no-check-certificate
# 解压
tar -xzf kafka_2.13-3.9.1.tgz

# 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1

2)修改配置文件

  • 编辑 server.properties 配置文件
vim config/kraft/server.properties

内容(修改以下配置,其它不变)

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.121:9092,CONTROLLER://192.168.249.121:9093

# Kafka存储日志数据的目录路径
log.dirs=/data/kraft-combined-logs

3)格式化存储目录

  • 生成UUID
# 生成 UUID
bin/kafka-storage.sh random-uuid
# 输出内容:
FHWoeUzDRWymafTzEl0rEw
  • 格式化存储目录
  • 注意:1.替换生成的 UUID;2.文件路径:config/kraft/server.properties
bin/kafka-storage.sh format -t FHWoeUzDRWymafTzEl0rEw -c config/kraft/server.properties

4)单机启动

  • 启动
cd /opt/kafka/kafka_2.13-3.9.1
# 启动
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
  • 查看运行情况
jps

5)测试

  • 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1
  • 创建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.249.121:9092
  • 写入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.249.121:9092

# 写入内容
first event
second event
  • 读取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.249.121:9092

6)systemd服务管理

  • 创建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target

[Service]
Environment="JAVA_HOME=/opt/java/dragonwell-11.0.27.24+6-GA"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.9.1/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
  • 启动服务,并设置开机自启动
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
  • 查询进程状态
systemctl status kafka-server.service

4.集群部署

1)下载软件包

在 121 服务器上执行

  • 创建安装目录,并下载
mkdir /opt/kafka && cd /opt/kafka

# 下载软件包,如果 wget 无法下载,可使用浏览器或迅雷下载
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz --no-check-certificate
# 解压
tar -xzf kafka_2.13-3.9.1.tgz

# 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1

2)修改配置文件

在 121 服务器上执行

  • 编辑 server.properties 配置文件
vim config/kraft/server.properties
  • 内容(修改以下配置,其它不变)
# 节点ID,集群节点唯一
node.id=1

# 标识哪些节点是Quorum的投票者节点
controller.quorum.voters=1@192.168.249.121:9093,2@192.168.249.122:9093,3@192.168.249.123:9093

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.121:9092,CONTROLLER://192.168.249.121:9093

# Kafka存储日志数据的目录路径
log.dirs=/data/kraft-combined-logs

3)拷贝Kafka

在 122、123 服务器上执行

  • 122 和 123 服务器创建目录
mkdir /opt/kafka

在 121 服务器上执行

  • 拷贝 Kafka 到其它服务器
scp -r /opt/kafka/kafka_2.13-3.9.1 root@192.168.249.122:/opt/kafka
scp -r /opt/kafka/kafka_2.13-3.9.1 root@192.168.249.123:/opt/kafka

4)修改配置文件

在 122 服务器上执行

  • 编辑 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.9.1

vim config/kraft/server.properties
  • 内容(修改以下配置,其它不变;注意这里是 121 服务器拷贝,所以省了2个参数)
# 节点ID,集群节点唯一
node.id=2

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.122:9092,CONTROLLER://192.168.249.122:9093

在 123 服务器上执行

  • 编辑 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.9.1

vim config/kraft/server.properties
  • 内容(修改以下配置,其它不变;注意这里是 121 服务器拷贝,所以省了2个参数)
# 节点ID,集群节点唯一
node.id=3

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.123:9092,CONTROLLER://192.168.249.123:9093

5)格式化存储目录

在 121 服务器上执行

  • 生成UUID
cd /opt/kafka/kafka_2.13-3.9.1

# 生成 UUID
bin/kafka-storage.sh random-uuid
# 输出内容:
OukPqtmXSAO2aYUs9kFFbg

在 121、122、123 服务器上执行

  • 格式化存储目录,使用生成的 UUID
bin/kafka-storage.sh format -t OukPqtmXSAO2aYUs9kFFbg -c config/kraft/server.properties

6)集群启动

在 121、122、123 服务器上执行

  • 启动
cd /opt/kafka/kafka_2.13-3.9.1
# 启动
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
  • 查看运行情况
jps

7)测试

在 121 服务器上执行

  • 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1
  • 创建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.249.121:9092
  • 写入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.249.121:9092

# 写入内容
first event
second event
  • 读取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.249.121:9092

8)systemd服务管理

在 121、122、123 服务器上执行

  • 创建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target

[Service]
Environment="JAVA_HOME=/opt/java/dragonwell-11.0.27.24+6-GA"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.9.1/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
  • 启动服务,并设置开机自启动
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
  • 查询进程状态
systemctl status kafka-server.service

5.Kafka监控管理

在 124 服务器上执行

1)Kafka启动JMX

在 121、122、123 服务器上执行

  • 编辑 kafka-server-start.sh 启动脚本
cd /opt/kafka/kafka_2.13-3.9.1/

vim bin/kafka-server-start.sh

编辑内容:除注释外第一行,加入 JMX 端口指定服务器 IP

注意:替换不同服务器的 IP

export JMX_PORT=9999

KAFKA_OPTS="-Dcom.sun.management.jmxremote \
            -Dcom.sun.management.jmxremote.authenticate=false \
            -Dcom.sun.management.jmxremote.ssl=false \
            -Djava.rmi.server.hostname=192.168.249.121"
export KAFKA_OPTS
  • 重启 Kafka(选择其中一种重启方式)
# systemctl 重启
systemctl stop kafka-server.service
systemctl start kafka-server.service
systemctl status kafka-server.service

# 备用,非必要执行,脚本重启
cd /opt/kafka/kafka_2.13-3.9.1/
bin/kafka-server-stop.sh
bin/kafka-server-start.sh -daemon config/kraft/server.properties
  • 检测 JMX 端口
netstat -tunlp |grep 9999

2)安装Kafbat UI

Kafbat UI 是一款多功能、高效、轻量级且灵活的 Web 界面工具,专为监控和管理 Apache Kafka® 集群而设计。它由开发者打造、为开发者服务,提供直观的操作体验,帮助用户:实时洞察数据流、快速定位并解决问题、保障集群持续高性能运行。

三、其它

1.常用命令

命令 说明
systemctl daemon-reload 重新加载服务配置
systemctl start kafka-server.service 启动服务
systemctl enable kafka-server.service 开机自启动服务
systemctl status kafka-server.service 查询服务状态
systemctl stop kafka-server.service 停止服务
systemctl restart kafka-server.service 重启服务
systemctl disable kafka-server.service 禁用开机自启动服务

网站公告

今日签到

点亮在社区的每一天
去签到