Kafka運維實戰 07 - kafka 三節點集群部署(混合模式)(KRaft 版本3.7.0)

目錄

    • 環境準備
      • 主機準備
      • 補充說明
    • 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…