文章目录

  • openEuler2403安装部署Kafka with KRaft
  • 一、前言
    • 1.简介
    • 2.架构
    • 3.环境
  • 二、正文
    • 1.部署服务器
    • 2.基础环境
      • 1)JDK 安装部署
      • 2)关闭防火墙
    • 3.单机部署
      • 1)下载软件包
      • 2)修改配置文件
      • 3)格式化存储目录
      • 4)单机启动
      • 5)测试
      • 6)systemd服务管理
    • 4.集群部署
      • 1)下载软件包
      • 2)修改配置文件
      • 3)拷贝Kafka
      • 4)修改配置文件
      • 5)格式化存储目录
      • 6)集群启动
      • 7)测试
      • 8)systemd服务管理
    • 5.Kafka监控管理
      • 1)Kafka启动JMX
      • 2)安装Kafbat UI
    • 三、其它
    • 1.常用命令

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 默认端口
端口描述
9092Kafka Clients
9093Kafka Control Plane
8083Kafka Connect
8081Schema Registry
8082REST Proxy
8088ksqlDB
  • 服务器
  • 单机部署使用:192.168.249.121
  • 集群部署使用:192.168.249.121、192.168.249.122、192.168.249.123
IP节点部署
192.168.249.121Kafka 节点
192.168.249.122Kafka 节点
192.168.249.123Kafka 节点
192.168.249.124Know 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.1vim 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.1vim 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=9999KAFKA_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® 集群而设计。它由开发者打造、为开发者服务,提供直观的操作体验,帮助用户:实时洞察数据流、快速定位并解决问题、保障集群持续高性能运行。

  • 具体操作参考:《openEuler2403安装部署Kafbat》

三、其它

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禁用开机自启动服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96123.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96123.shtml
英文地址,请注明出处:http://en.pswp.cn/web/96123.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发布工业智能体,云从科技打造制造业AI“运营大脑”

近日&#xff0c;在2025世界智能产业博览会重庆市工业智能体首发仪式现场&#xff0c;云从科技重磅发布经营决策-产线运营智能体&#xff0c;为制造业的智能化转型提供了全新的解决方案。该智能体的亮相&#xff0c;不仅代表着人工智能技术在工业领域的深度应用&#xff0c;更标…

【Linux基础】parted命令详解:从入门到精通的磁盘分区管理完全指南

目录 前言 1 parted命令概述 1.1 什么是parted 1.2 parted与fdisk的对比 1.3 parted的主要优势 2 parted命令的安装与基本语法 2.1 在不同Linux发行版中安装parted 2.2 parted的基本语法 2.3 parted的工作模式 3 parted交互式命令详解 3.1 交互式操作流程 3.2 主要…

如何在路由器上配置DHCP服务器?

在路由器上配置DHCP服务器的步骤因品牌&#xff08;如TP-Link、华为、小米、华硕等&#xff09;略有差异&#xff0c;但核心流程一致&#xff0c;主要包括登录管理界面、开启DHCP功能、设置IP地址池及相关参数。以下是通用操作指南&#xff1a; 一、准备工作 确保电脑/手机已连…

HTML和CSS学习

HTML学习 注释 <!-- -->组成 告诉浏览器我是html文件<!DOCTYPE html> <title>浏览器标签</title> <body> <!--- 其中是主要内容 ---> <p> 段落 </p> </body> </html> (结束点…

OpenTenBase vs MySQL vs Oracle,企业级应用数据库实盘对比分析

摘要 因为工作久了的缘故&#xff0c;接触过不少数据库。公司的管理系统用的MySQL&#xff0c;财务系统用的Oracle。随着时代发展&#xff0c;国产开源数据库已经在性能上能与这些国际知名顶尖数据库品牌相媲美&#xff0c;其中OpenTenBase以其开放环境和优越性能脱颖而出&…

Oracle 备份与恢复常见的七大问题

为了最大限度保障数据的安全性&#xff0c;同时能在不可预计灾难的情况下保证数据的快速恢复&#xff0c;需要根据数据的类型和重要程度制定相应的备份和恢复方案。在这个过程中&#xff0c;DBA的职责就是要保证数据库&#xff08;其它数据由其它岗位负责&#xff09;的高可用和…

StringBuilder类的数据结构和扩容方式解读

目录 StringBuilder是什么 核心特性&#xff1a; StringBuilder数据结构 1. 核心存储结构&#xff08;基于父类 AbstractStringBuilder&#xff09; 2. 类定义与继承关系 3. 数据结构的核心特点 StringBuilder数据结构的初始化方式 1. 无参构造&#xff1a;默认初始容量…

LangChain实战(十七):构建与PDF/PPT文档对话的AI助手

本文是《LangChain实战课》系列的第十七篇,将专篇深入讲解如何构建能够与PDF和PPT文档进行智能对话的AI助手。通过学习本文,您将掌握复杂格式文档的解析技巧、文本与表格处理技术,以及实现精准问答的系统方法。 前言 在日常工作和学习中,PDF和PPT文档是我们最常接触的文档…

鱼眼相机模型

鱼眼相机模型 最近涉及鱼眼相机模型、标定使用等&#xff0c;作为记录&#xff0c;更新很久不曾更新的博客。 文章目录鱼眼相机模型1 相机成像2 鱼眼模型3 畸变3.1 适用针孔和MEI3.2 Kannala-Brandt鱼眼模型4 代码实现1 相机成像 针孔相机&#xff1a;所有光线从一个孔&#xf…

大语言模型提示词工程详尽实战指南

引言&#xff1a;与大型语言模型&#xff08;LLM&#xff09;高效对话的艺术大型语言模型&#xff08;LLM&#xff09;——例如我们熟知的GPT系列、Claude、Llama等——在自然语言处理&#xff08;NLP&#xff09;领域展现了惊人的能力&#xff0c;能够执行文本摘要、翻译、代码…

HTTP 请求体格式详解

1. 概览与概念 Content-Type&#xff1a;HTTP 请求/响应头&#xff0c;表示消息体的媒体类型&#xff08;MIME type&#xff09;。服务端用它决定如何解析请求体。常见场景&#xff1a; 纯结构化数据&#xff08;JSON&#xff09; → application/json表单 文件上传 → multip…

事务设置和消息分发

事务 RabbitMQ是基于AMQP协议实现的&#xff0c;该协议实现了事务机制&#xff0c;因此RabbitMQ也支持事务机制. SpringAMQP也提供了对事务相关的操作&#xff0c;RabbitMQ事务允许开发者确保消息的发送和接收是原子性的&#xff0c;要么 全部成功&#xff0c;要么全部失败.| 前…

Python 中 try / except / else / finally 异常处理详解

1. 基本结构 try:# 可能会抛出异常的代码 except SomeException as e:# 捕获并处理异常 else:# 如果 try 中代码没有异常&#xff0c;就执行这里 finally:# 无论是否发生异常&#xff0c;最后都会执行这里2. 各部分的作用 try 用途&#xff1a;包含可能发生异常的代码段。如果代…

冰火岛 Tech 传:Apple Foundation Models 心法解密(下集)

引子 上集说到冰火岛冰屋内,谢逊、张翠山、殷素素三人亲见 “指令(Instructions)” 如何让 AI 脱胎换骨,从木讷报地名的 “愣头青”,变身为文采斐然的 “旅行作家”。 正当素素惊叹这 AI 武学的奇妙时,谢逊却突然神色一凛,指着手腕上用冰屑刻的 “4096” 字样道:“这等…

Qt信号与槽机制全面解析

✨ 1. 核心概念信号与槽是Qt独创的一种对象间通信机制&#xff0c;它使得一个对象的状态变化或事件发生能够自动通知其他对象作出响应&#xff0c;从而实现高度解耦的代码设计。1.1 信号&#xff08;Signals&#xff09;定义&#xff1a;信号是由对象在特定事件发生时发出&…

2025年COR SCI2区,基于近似细胞分解的能源高效无人机路径规划问题用于地质灾害监测,深度解析+性能实测

目录1.摘要2.问题描述与数学模型3.能源网格混合元启发式算法4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流1.摘要 本文提出了一种能源高效的无人机路径规划方法&#xff08;EURP&#xff09;用于监测分散的地质灾害易发区域&#xff0c;通过建立无人机飞行模式的…

LangChain关于提示词的几种写法

上文中 <---->(可点击移步查阅),我们已经了解到LangChain如何编写调用大模型的一个基本框架, 在编写完这个基本框架后,就要与大模型进行交互了,这时候,就需要我们编写提示词了, 那么以下,就会介绍提示词的几种编写方式 1 可携带变量的提示词 1.1 PromptTempla…

CyberPoC 是一个现代化的网络安全练习和竞赛平台,支持容器化部署的安全挑战,为用户提供实践网络安全技能的环境。

工具介绍 CyberPoC 是一个现代化的网络安全练习和竞赛平台&#xff0c;支持容器化部署的安全挑战&#xff0c;为用户提供实践网络安全技能的环境。 &#x1f680; 快速开始 使用 Docker Compose (推荐) 克隆项目 git clone https://github.com/dushixiang/cyberpoc.gitcd cy…

【单片机day03】

UART串口通用异步收发器&#xff0c;2个串口(1个串口被用于ISP下载程序&#xff0c;1个串口被用于和主机之间的通信)全双工&#xff08;两根线TX、RX&#xff09;、串行、异步通信方式&#xff1a;单工&#xff1a;发送方和接收方是固定的&#xff0c;数据只能从发送方 发给 …

react16到react19更新及底层实现是什么以及区别

好问题 &#x1f44d;。React 16 → 19 的更新跨度其实涵盖了 React 的几个“时代级”的演进&#xff1a;从 Fiber 架构 的重写、到 并发特性 的引入&#xff0c;再到 React Server Components 和 现代语法支持。我帮你梳理下主要更新点和底层实现的区别&#xff0c;方便你系统…