Kafka Kraft模式集群 + ssl

文章目錄

  • 啟用集群
    • 資源規劃
    • 準備證書
    • 創建相關文件夾
    • 配置文件
    • 啟動各Kafka節點
  • 故障轉移測試
  • spring boot集成

啟用集群

配置集群時關鍵就是提前梳理好需要的網絡資源,完成對應server.properties文件的配置。在執行前先把這些梳理好,可以方便后面的配置,也不容易出錯,其他操作跟單機Kafka版都是一樣的。
一般需要提前規劃各節點所在服務器、端口、Kafka安裝路徑、數據存放位置、配置文件位置、ssl證書位置(需要配置的ssl的話才需要)。對于測試,如果所有節點都在同一臺服務器上,直接使用同一個Kafka搭配多個不同配置文件啟動多個實例就行。

資源規劃

下面是通過一臺服務器的多個端口仿照多臺服務器,配置3個節點的集群,大概需要以下資源:

服務器地址broker端口controller端口安裝位置配置文件數據證書位置
192.168.1.190929095/home/kafka-cluster/broker1/home/kafka-cluster/broker1/config/data/kafka/broker1/usr/ca/ssl
192.168.1.190939096/home/kafka-cluster/broker2/home/kafka-cluster/broker2/config/data/kafka/broker2/usr/ca/ssl2
192.168.1.190949097/home/kafka-cluster/broker3/home/kafka-cluster/broker3/config/data/kafka/broker3/usr/ca/ssl3

如果是在多臺服務器上配置,可以直接配置好一臺,復制server.properties或者整個kafka到其他服務器,這樣可以減少很多重復性工作。只需要保證把證書生成到相同的路徑下,就不用做重復其他工作了。

準備證書

證書生成可以參考上一篇單機Kafka配置ssl并在springboot使用
生成的各節點證書如下:
在這里插入圖片描述

創建相關文件夾

Kafka及配置文件位置:
在這里插入圖片描述
各節點數據位置:
在這里插入圖片描述

配置文件

broker1配置文件:

#SSL配置部分
listeners=SSL://:9092
#下面的localhost需要改成ip,否則只有自己能連上
advertised.listeners=SSL://localhost:9092
security.inter.broker.protocol=SSL
ssl.endpoint.identification.algorithm=
ssl.keystore.location=/usr/ca/ssl/keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/ca/ssl/truststore.jks
ssl.truststore.password=123456
#這里配置成雙向認證
ssl.client.auth=required
# 不驗證客戶端證書
#ssl.client.auth=none# 在集群中的編號,只要保持唯一就行,
broker.id=1#Kraft模式的集群關鍵配置就是這一句,每個節點多配置了一個controller端口
controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097log.dirs=/data/kafka/broker1
#后面的配置都是默認的,可以不用管
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1 
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
#雖然Kraft模式的集群不需要zookeeper,但是這個配置是必須要有的,否則會報錯
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

broker2配置文件:

listeners=SSL://:9093
#下面的localhost需要改成ip,否則只有自己能連上
advertised.listeners=SSL://localhost:9093
security.inter.broker.protocol=SSL
ssl.endpoint.identification.algorithm=
ssl.keystore.location=/usr/ca/ssl2/keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/ca/ssl/truststore.jks
ssl.truststore.password=123456
#這里配置成雙向認證
ssl.client.auth=required
# 不驗證客戶端證書
#ssl.client.auth=none  broker.id=2controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097
log.dirs=/data/kafka/broker2#后面的配置都是默認的,可以不用管
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

broker3配置文件:

listeners=SSL://:9094
#下面的localhost需要改成ip,否則只有自己能連上
advertised.listeners=SSL://localhost:9094
security.inter.broker.protocol=SSL
ssl.endpoint.identification.algorithm=
ssl.keystore.location=/usr/ca/ssl3/keystore.jks
ssl.keystore.password=123456
ssl.key.password=123456
ssl.truststore.location=/usr/ca/ssl/truststore.jks
ssl.truststore.password=123456
#這里配置成雙向認證
ssl.client.auth=required
# 不驗證客戶端證書
#ssl.client.auth=none broker.id=3controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097
log.dirs=/data/kafka/broker3#后面的配置都是默認的,可以不用管
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0

集群關鍵配置:

broker.id=3
controller.quorum.voters=1@kafka1:9095,2@kafka1:9096,3@kafka1:9097 

其他的配置項單機也要配置,集群只是保證broker id的唯一性且增加controller配置,controller配置中的kafka1為對應服務器hosts的主機名。

啟動各Kafka節點

cd到對應Kafka路徑下(比如broker1就cd /home/kafka-cluster/broker1)執行以下命令或者使用絕對路徑執行,

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

故障轉移測試

故障前的集群狀態:
在這里插入圖片描述
原leader故障后從broker1轉到broker2
在這里插入圖片描述
恢復原來的leader節點之后,會自動切回去
在這里插入圖片描述

spring boot集成

其他配置跟單機Kafka配置ssl并在springboot使用是一樣的,只需要把bootstrap-servers改成多個節點的情況就行,其中kafka是項目服務器hosts配置的主機名

bootstrap-servers: kafka:9092,kafka:9093,kafka:9094

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907036.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907036.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907036.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

watchEffect

在處理復雜異步邏輯時,Vue 3 的 watchEffect 相比傳統的 watch 具有以下優勢: 1. 自動追蹤依賴 watchEffect 會自動收集其回調中使用的所有響應式依賴,無需手動指定監聽源: import { ref, watchEffect } from vue;const count …

Linux系統平均負載與top、uptime命令詳解

介紹 在Linux系統運維中,系統平均負載是一個重要的性能指標。通過 top和 uptime命令,可以實時監控系統的負載情況,幫助運維人員及時發現并解決系統性能問題。本文將詳細介紹Linux系統平均負載的概念及其計算方法,并深入解析 top和…

前端配置nginx代理

一、定義靜態文件的路徑的兩種方式 1. root 指令 (1)作用 指定文件系統的 基礎路徑,location 的 URI 會 追加到該路徑后 形成完整路徑。 (2)語法 location /uri/ {root /path/to/files; } (3&#xf…

語音識別技術在人工智能中的應用

姓名:成杰 學號:21021210653 學院:電子工程學院 【嵌牛導讀】 應用語音智能這項識別技術是為了使計算機可以聽懂人類的語言,并執行人類的某項操作。現階段這項技術已經成為人工智能領域的重點研究方向和實現人機語音交互的…

uniapp實現大視頻文件上傳-- 阿里云oss直傳方式 - app、H5、微信小程序

之前的項目文件上傳比較慢,使用預簽名方式上傳H5正常,微信小程序和app使用axios時出現了各種報錯,配置完后還是不行。所以換一種oss直傳方式。 找到一個 實現了的 參考:https://blog.csdn.net/qq_44860866/article/details/129670188

【Java學習筆記】抽象類

抽象類 引入關鍵字:abstract 應用場景:當子類中共有的部分 / 特性可以放到抽象類中 1. 通過子類的方法重寫實現不同的功能 2. 編寫一個方法把共有的部分放入其中,在該方法中調用抽象方法(動態綁定機制) 3. 便可以實…

EPT(Efficient Prompt Tuning)方法,旨在解決提示調優(Prompt Tuning)中效率與準確性平衡和跨任務一致性的問題

EPT(Efficient Prompt Tuning)方法,旨在解決提示調優(Prompt Tuning)中效率與準確性平衡和跨任務一致性的問題 一、核心原理:分解提示與多空間投影 1. 提示分解:用低秩矩陣壓縮長提示 傳統問題: 長提示(如100個token)精度高但訓練慢,短提示(如20個token)速度快但…

深入剖析Java中的偽共享:原理、檢測與解決方案

在高性能Java應用的開發中,尤其是多線程環境下,開發者往往會關注鎖競爭、線程調度等顯性問題,但有一個隱蔽的性能殺手——偽共享(False Sharing)?,卻容易被忽視。本文將通過原理分析、代碼案例與實戰工具&…

JMeter 教程:響應斷言

目錄 JMeter 教程:響應斷言的簡單介紹【輕松上手】 ? 什么是響應斷言? 📌 使用場景示例 🛠? 添加響應斷言步驟 1. 選中 HTTP 請求 → 右鍵 → Add → Assertions → Response Assertion 2. 設置斷言內容: ? …

11.11 TypedDict與Pydantic實戰:Python高效狀態管理秘籍

使用 TypedDict 和 Pydantic 管理狀態 關鍵詞:LangGraph 狀態管理, TypedDict 類型化字典, Pydantic 數據模型, 狀態持久化, 多輪對話設計 1. 狀態管理的核心挑戰 在復雜 AI Agent 系統中,狀態管理需要解決三個關鍵問題: #mermaid-svg-0sX3763L7VP2RvuX {font-family:&quo…

ThreadLocal線程本地變量在dubbo服務使用時候遇到的一個坑

我昨天遇到一個問題,就是我springboot項目里面有一個提供代辦服務審核的dubbo接口,這個接口給房源項目調用,但是碰到一個問題就是,房源項目每天凌晨5點會查詢滿足條件過期的數據,然后調用我這邊的代辦審核dubbo接口&am…

[Java實戰]Spring Boot整合達夢數據庫連接池配置(三十四)

[Java實戰]Spring Boot整合達夢數據庫連接池配置(三十四) 一、HikariCP連接池配置(默認) 1. 基礎配置(application.yml) spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://…

【MySQL】08.視圖

視圖就是一個由查詢到的內容定義的虛擬表。它和真實的表一樣,視圖包含一系列帶有名稱的列和行數據。視圖的數據變化會影響到基表,基表的數據變化也會影響到視圖。 1. 基本使用 mysql> select * from user; -------------------- | id | age | name …

4 通道1250MSPS‐16bit DAC 回放板

簡介 4 通道1250MSPS‐16bit DAC 回放板 是一款4 路轉換速率最高為1250MSPS 的DAC 回放板, DAC 位數16bit;板卡支持觸發輸出/觸發輸入;DAC 采樣時鐘源支持內部參考時 鐘、外部參考時鐘、外部采樣時鐘三種方式,可通過SPI 總線實現時…

C/C++---類型轉換運算符

在C中,類型轉換運算符(Type Conversion Operator)允許類對象在需要時自動轉換為其他類型。這是一種特殊的成員函數,能夠增強類的靈活性和交互性。 1. 基本語法 類型轉換運算符的聲明格式為: operator 目標類型() co…

大模型Agent

手撕 Agent 1、功能描述 設計一個 Agent,自動選擇使用以下工具回答用戶的問題: 查看目錄下的文件基于給定的文檔回答用戶問題查看與分析 Excel 文件撰寫文檔調用 Email 客戶端發郵件2、演示用例 實驗中使用三個文檔演示 Agent 的能力 ./data|__2023年8月-9月銷售記錄.xlsx…

超臨界機組協調控制系統建模項目開發筆記

超臨界機組協調控制系統建模項目開發筆記 項目概述 本項目基于兩篇論文的方法,對超臨界機組協調控制系統進行數據驅動建模。主要使用LSTMTransformer混合架構,實現對主蒸汽壓力(Pst)、分離器蒸汽焓值(hm)和機組負荷(Ne)的預測。同時,通過消…

mysql安全管理

數據庫管理系統用于管理數據庫服務器的各種數據庫資源,MYSQL是一個支持多用戶的數據庫管理系統,實現多用戶下,各種數據庫資源的安全訪問控制,確保數據庫資源安全訪問成為了數據庫管理系統的核心功能。MYSQL安全管理是指允許合法賬…

QT中常用的類

Qt 是一個功能強大的跨平臺框架,提供了豐富的類庫來開發 GUI 和應用程序。以下是 ??Qt 中常用的核心類??,按模塊分類整理: ??1. GUI 和窗口管理?? 類名用途示例場景??QWidget??所有 GUI 控件的基類(按鈕、窗口等&…

【Redis原理篇】五大基本數據類型的底層編碼方式

上文:redis底層數據結構 String底層結構 一、編碼方式 1.int編碼 **適用范圍:**64位整數(long) **實現:**直接將數據存儲在redisObject的ptr指針位置。 內存布局: 2.embstr編碼 **適用條件&#xf…