目录

    • 环境准备
      • 主机准备
      • 补充说明
    • JDK安装 (三台主机分别执行)
      • 下载jdk
      • jdk安装
    • kafka 部署(三台主机分别执行)
      • kafka 下载
      • kafka 版本号结构解析
      • kafka 安装
        • 下载和解压安装包(3台主机都执行)
        • 配置 server.properties (KRaft 模式)
          • 192.168.37.10
          • 192.168.37.11
          • 192.168.37.12
        • 格式化存储目录
          • 第一个节点执行
          • 三个节点分别执行
        • 启动kafka (3个节点分别执行)
        • Kafka 配置为 systemd 服务
        • 查看集群控制器状态
    • 注意事项
      • 调整 JVM 内存参数
      • 在Kraft模式下,Kafka有如下三个配置文件可以配置。

Kafka KRaft 版本(即 Kafka 3.0 及更高版本)使用 KRaft 模式(Kafka Raft 协议)替代 ZooKeeper 进行集群管理,简化了部署流程。以下是在 Linux 系统上部署 Kafka KRaft 的详细步骤。

环境准备

主机准备

主机IP角色操作系统
192.168.37.10broker,controllerCentos 7
192.168.37.11broker,controllerCentos 7
192.168.37.12broker,controllerCentos 7

补充说明

我们这种,将Broker和Controllers部署一台的做法,称为 “组合式”。

同时充当代理和控制器的 Kafka 服务器被称为 “组合式” 服务器。对于开发环境等小型用例而言,组合式服务器的操作更为简单。其主要缺点在于,控制器与系统其他部分的隔离性较差。例如,在组合模式下,无法将控制器与代理分开进行滚动升级或扩展。在关键的部署环境中,不建议使用组合模式。
在这里插入图片描述

JDK安装 (三台主机分别执行)

下载jdk

https://www.oracle.com/java/technologies/downloads/?er=221886#java21

jdk安装

  1. 解压下载的文件到指定目录
tar xvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/
  1. 设置环境变量 (以 Linux/macOS 为例)
    vim /etc/profile
export JAVA_HOME=/usr/local/jdk-21.0.8
export PATH=$JAVA_HOME/bin:$PATH
  1. 刷新环境变量
source /etc/profile
  1. 验证安装
[root@test-10 bin]# java --version
java 21.0.8 2025-07-15 LTS
Java(TM) SE Runtime Environment (build 21.0.8+12-LTS-250)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.8+12-LTS-250, mixed mode, sharing)

kafka 部署(三台主机分别执行)

kafka 下载

地址:https://archive.apache.org/dist/kafka/
在这里插入图片描述
这里展示了历史的kafka各个版本。

本次我们下载 kafka_2.13-3.7.0.tgz 这个版本
https://archive.apache.org/dist/kafka/3.7.0/kafka_2.13-3.7.0.tgz

kafka 版本号结构解析

kafka_<SCALA_VERSION>-<KAFKA_VERSION>.tgz

Kafka 是用 Scala 和 Java 开发的,因此需要特定版本的 Scala 编译。版本号中的 2.13 表示该 Kafka 版本是用 Scala 2.13.x 编译的
3.7.0 是 Kafka 自身的版本号,采用 MAJOR.MINOR.PATCH 格式

kafka 安装

下载和解压安装包(3台主机都执行)
mkdir -p /data/middleware
tar xvf kafka_2.13-3.7.0.tgz -C /data/middleware/
配置 server.properties (KRaft 模式)
192.168.37.10

编辑 config/kraft/server.properties 文件:

node.id=1
advertised.listeners=PLAINTEXT://192.168.37.10:9092
controller.listener.names=CONTROLLER
controller.quorum.voters=1@192.168.37.10:9093,2@192.168.37.11:9093,3@192.168.37.12:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
log.dirs=/data/middleware/kafka_2.13-3.7.0/data
192.168.37.11
node.id=2
advertised.listeners=PLAINTEXT://192.168.37.11:9092
controller.listener.names=CONTROLLER
controller.quorum.voters=1@192.168.37.10:9093,2@192.168.37.11:9093,3@192.168.37.12:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
log.dirs=/data/middleware/kafka_2.13-3.7.0/data
192.168.37.12
node.id=3
advertised.listeners=PLAINTEXT://192.168.37.12:9092
controller.listener.names=CONTROLLER
controller.quorum.voters=1@192.168.37.10:9093,2@192.168.37.11:9093,3@192.168.37.12:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
log.dirs=/data/middleware/kafka_2.13-3.7.0/data
格式化存储目录
第一个节点执行

Kafka KRaft 模式需要生成一个集群 ID 并配置相关参数:

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-storage.sh random-uuid
BJODTrqBTbCBnwSG2VszJg
三个节点分别执行

将生成的 UUID 记录下来, 使用生成的集群 ID 格式化存储目录:
./bin/kafka-storage.sh format -t <YOUR_CLUSTER_ID> -c config/kraft/server.properties

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-storage.sh format -t  BJODTrqBTbCBnwSG2VszJg  -c config/kraft/server.properties
metaPropertiesEnsemble=MetaPropertiesEnsemble(metadataLogDir=Optional.empty, dirs={/data/middleware/kafka_2.13-3.7.0/data: EMPTY})
Formatting /data/middleware/kafka_2.13-3.7.0/data with metadata.version 3.7-IV4.# 执行后,data目录自动创建,并生成了两个文件。
[root@test-10 kafka_2.13-3.7.0]# ls data/
bootstrap.checkpoint  meta.properties
[root@test-10 kafka_2.13-3.7.0]# cat data/meta.properties 
#
#Fri Jul 18 11:25:00 CST 2025
cluster.id=BJODTrqBTbCBnwSG2VszJg
directory.id=YE6-pLr4UPcqstWaKaZJFw
node.id=1
version=1
启动kafka (3个节点分别执行)

前台启动(方便调试)

./bin/kafka-server-start.sh config/kraft/server.properties

后台启动

./bin/kafka-server-start.sh -daemon config/kraft/server.properties
Kafka 配置为 systemd 服务
[root@test-10 logs]# systemctl cat kafka 
# /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka Server (KRaft Mode)
Documentation=https://kafka.apache.org/documentation/
Requires=network.target
After=network.target[Service]
Type=forking
Environment="JAVA_HOME=/usr/local/jdk-21.0.8" 
ExecStart=/data/middleware/kafka_2.13-3.7.0/bin/kafka-server-start.sh -daemon  /data/middleware/kafka_2.13-3.7.0/config/kraft/server.properties
ExecStop=/data/middleware/kafka_2.13-3.7.0/bin/kafka-server-stop.sh
Restart=on-failure
RestartSec=5
LimitNOFILE=100000[Install]
WantedBy=multi-user.target

重新加载 systemd 并启动服务

sudo systemctl daemon-reload
sudo systemctl start kafka
sudo systemctl enable kafka  # 设置开机自启
查看集群控制器状态

在这里插入图片描述

注意事项

调整 JVM 内存参数

可以在Service文件中增加

Environment=“KAFKA_HEAP_OPTS=-Xmx4G -Xms4G”

不覆盖修改,则启动的JVM参数采用bin/kafka-server-start.sh 默认
在这里插入图片描述

在Kraft模式下,Kafka有如下三个配置文件可以配置。

  • config/kraft/broker.properties 当节点作为[broker]角色运行时,会去读该文件中的配置项启动。
  • config/kraft/controller.properties 当节点作为[controller]角色运行时,会去读该文件中的配置项启动。
  • config/kraft/server.properties 当节点同时作为[broker, controller]角色运行时,会去读该文件中的配置项启动。

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

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

相关文章

linux内核与GNU之间的联系和区别

要理解操作系统&#xff08;如 GNU/Linux&#xff09;的组成&#xff0c;需要明确 内核&#xff08;Kernel&#xff09; 和 GNU 工具链 各自的功能&#xff0c;以及它们如何协作构成完整的操作系统。以下是详细分析&#xff1a;1. 内核&#xff08;Kernel&#xff09;的功能 内…

文件包含学习总结

目录 漏洞简介 漏洞原理 漏洞分类 漏洞防御 漏洞简介 程序开发人员一般会把重复使用的函数写到单个文件中&#xff0c;需要使用某个函数时直接调用此文件&#xff0c;而无需再次编写&#xff0c;这种文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活&…

TQZC706开发板教程:创建PCIE项目

本例程基于zc706开发板&#xff0c;使用xdma核创建PCIE项目&#xff0c;最终实现插入主机可识别出Xilinx设备。在vivado中创建一个空的706项目。创建完成后添加IP核-->搜索xdma-->双击打开配置。添加XDMA核如下所示basic配置peic id中设置设备号等信息&#xff0c;这里保…

科技赋能景区生.态,负氧离子气象监测站筑牢清新防线

负氧离子气象监测站&#xff0c;如同景区空气质量的坚固防线&#xff0c;默默守护着每一寸土地的清新。​它以精准的监测能力为防线基石。借助 “吸入式电容收集法”&#xff0c;能敏锐捕捉空气中负氧离子的踪迹&#xff0c;精准测量其浓度&#xff0c;同时将温度、湿度、PM2.5…

AMD官网下载失败,不让账户登录下载

别使用163邮箱 使用QQ邮箱&#xff0c;然后用GPT生成一个外国&#xff0c;比如日本的地区信息填上去就可以下载了

Elasticsearch-8.17.0 centos7安装

下载链接 https://www.elastic.co/downloads/past-releases/elasticsearch-8-17-0 https://www.elastic.co/downloads/past-releases/logstash-8-17-0 https://www.elastic.co/cn/downloads/past-releases/kibana-8-17-0https://artifacts.elastic.co/downloads/elasticsearch/…

windows下SAS9.4软件下载与安装教程

SAS 9.4是SAS公司推出的一款功能强大的统计分析软件&#xff0c;广泛应用于数据分析、商业智能、预测分析、数据挖掘及统计建模等多个领域。数据处理与管理能力&#xff1a;SAS 9.4支持多种数据格式的导入导出&#xff0c;包括JSON、XML等&#xff0c;便于处理来自Web和API的数…

MyBatis-Plus极速开发指南

MyBatis-Plus简介MyBatis-Plus 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;简化开发&#xff0c;提高效率。它提供了以下主要特性&#xff1a;无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影响强大的 …

Django接口自动化平台实现(五)

8. 测试用例执行 预期效果如下&#xff1a;用例执行逻辑如下&#xff1a;前端提交用例 id 列表到后台&#xff0c;后台获取每一条用例的信息&#xff1b;后台获取域名信息、用例 id 列表&#xff1b;对用例的请求数据进行变量的参数化、函数化等预处理操作&#xff1b;根据先后…

一个没有手动加分号引发的bug

最近因为分号的疏忽&#xff0c;导致出现了一个bug&#xff0c;记录下来&#xff0c;分享给大家。 1、一个示例 给你下面这一段代码&#xff0c;你根据经验判断一下运营结果 let [a,b] [a,b] let [x,y] [1,2] if(x < y){[x,y] [y,x][a,b] [b,a] }按照一般的理解&#xf…

Elasticsearch安全审计日志设置与最佳实践

一、Elasticsearch安全审计简介 审计日志&#xff08;Audit Logging&#xff09;用于记录Elasticsearch中的安全相关事件&#xff0c;包括认证失败、连接拒绝、数据访问事件以及通过API对安全配置&#xff08;如用户、角色、API密钥&#xff09;的变更记录。 注意&#xff1a;审…

算法训练营day29 贪心算法③ 134. 加油站、135. 分发糖果 、860.柠檬水找零、406.根据身高重建队列

贪心算法的第三篇博客&#xff0c;继续脑筋风暴&#xff01; 134. 加油站 写在前面 这道题规定了有解的话&#xff0c;必定为唯一解 贪心思路 直接从全局进行贪心选择&#xff0c;情况如下&#xff1a; 情况一&#xff1a;如果gas的总和小于cost总和&#xff0c;那么无论从…

【09】C#入门到精通——C# 结构体对齐 与 常用数据 对应关系

文章目录1 C# 结构体对齐1.1 默认对齐方式1.2 节对齐方式设置1.3 偏移量设置2 C#与C/C之间类型的对应关系1 C# 结构体对齐 1.1 默认对齐方式 struct默认对齐方式&#xff0c;结构体长度必须是&#xff0c;最大成员长度的整数倍&#xff0c;所以下面结构体大小是 24 (实际占用…

pytest 测试报告生成方案有哪些?

在 pytest 中&#xff0c;除了 Allure 和 HTMLTestRunner&#xff0c;还有许多其他生成测试报告的方法和插件。以下是一些常用的方案及其特点&#xff1a;1. pytest-html&#xff08;官方推荐&#xff09;特点&#xff1a;轻量级、易集成&#xff0c;生成独立的 HTML 报告。安装…

Unity中EditorPrefs与PlayerPrefs对比分析

Unity中EditorPrefs与PlayerPrefs对比分析 EditorPrefs与PlayerPrefs是Unity引擎中用于数据持久化的两个核心类&#xff0c;分别用于于编辑器扩展与游戏运行时场景。以下从设计目标、存储位置、数据类型、生命周期、安全性、使用场景等方面展开对比&#xff0c;并结合代码示例说…

蓝光中的愧疚

蓝光中的愧疚活动结束那晚&#xff0c;深圳的空气吸饱了水汽&#xff0c;沉甸甸地压在胸口。我站在西乡社区活动中心冰凉的玻璃门外&#xff0c;目送着最后一个离开的王老师。她关掉门厅的灯&#xff0c;电子门锁合拢时发出轻微却尖锐的“嘀”声&#xff0c;像一根细针扎在我紧…

Linux: network: wireshark: esp attempt to detec null-encrypted esp payloads

最近看到一个pcap文件&#xff0c;里面有esp协议包&#xff0c;而且是明文/没有加密的消息&#xff0c;为什么wireshark没有将esp上层的tcp/sip消息没有解出来。 类似于Info列只有ESP的信息。后来选中了协议选项里的&#xff1a;attempt to detect/decode NULL encrypted ESP p…

10分钟搭建脚手架:Spring Boot 3.2 + Vue3 前后端分离模板

10分钟搭建脚手架&#xff1a;Spring Boot 3.2 Vue3 前后端分离模板一、项目结构设计二、后端搭建&#xff08;Spring Boot 3.2&#xff09;1. 快速初始化&#xff08;使用 Spring Initializr&#xff09;2. 核心配置application.yml跨域配置 CorsConfig.java3. 安全配置Secur…

【轨物方案】分布式光伏电站运维升级智能化系列:老电站的数智化重生

自2010年分布式光伏在国内兴起以来&#xff0c;十余年间&#xff0c;市场装机容量已实现飞跃式增长。长期以来&#xff0c;传统的人工巡查和抄表模式是它们日常运维的主要手段。然而&#xff0c;随着电站数量的激增和设备的老化&#xff0c;由此导致的事故频发&#xff0c;使得…

RAG 技术深度面试题:架构、优化与实践应用

1. RAG 基础架构设计 问题&#xff1a;对比单阶段检索&#xff08;Single-stage Retrieval&#xff09;与两阶段检索&#xff08;Two-stage Retrieval&#xff09;在 RAG 系统中的架构差异&#xff0c;说明在企业知识库场景下为何优先选择两阶段检索&#xff1f; 答案&#xff…