Kafka KRaft + SSL + SASL/PLAIN 部署文檔

本文檔介紹如何在 Windows 環境下部署 Kafka 4.x,使用 KRaft 模式、SSL 加密和 SASL/PLAIN 認證。stevensu1/kafka_2.13-4.0.0

1. 環境準備

  • JDK 17 或更高版本
  • Kafka 4.x 版本(本文檔基于 kafka_2.13-4.0.0)

2. 目錄結構

D:\kafka_2.13-4.0.0\
├── bin\windows\
├── config\
│   ├── server.properties
│   ├── ssl.properties
│   ├── jaas.conf
│   └── log4j2.properties
├── logs\
└── config\ssl\├── kafka.server.keystore.jks└── kafka.server.truststore.jks

3. 配置文件說明

3.1 server.properties

# 節點角色配置
process.roles=broker,controller
node.id=1# 監聽器配置
listeners=PLAINTEXT://:9092,CONTROLLER://:9093,SSL://:9094,SASL_SSL://:9095
advertised.listeners=SSL://localhost:9094,SASL_SSL://localhost:9095
controller.listener.names=CONTROLLER
inter.broker.listener.name=SSL
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_SSL:SASL_SSL# 控制器配置
controller.quorum.voters=1@localhost:9093# 日志配置
log.dirs=D:/kafka_2.13-4.0.0/logs# 安全配置
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
allow.everyone.if.no.acl.found=true# SSL 配置
ssl.keystore.location=config/ssl/kafka.server.keystore.jks
ssl.keystore.password=kafka123
ssl.key.password=kafka123
ssl.truststore.location=config/ssl/kafka.server.truststore.jks
ssl.truststore.password=kafka123
ssl.client.auth=required
ssl.enabled.protocols=TLSv1.2,TLSv1.3
ssl.endpoint.identification.algorithm=HTTPS
ssl.secure.random.implementation=SHA1PRNG

3.2 ssl.properties

# SSL 配置
ssl.keystore.location=config/ssl/kafka.server.keystore.jks
ssl.keystore.password=kafka123
ssl.key.password=kafka123
ssl.truststore.location=config/ssl/kafka.server.truststore.jks
ssl.truststore.password=kafka123
ssl.client.auth=required
ssl.enabled.protocols=TLSv1.2,TLSv1.3
ssl.endpoint.identification.algorithm=HTTPS
ssl.secure.random.implementation=SHA1PRNG

3.3 jaas.conf

KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret"user_alice="alice-secret";
};

3.4 log4j2.properties

status = INFO
name = KafkaConfig# 控制臺輸出
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n# 文件輸出
appender.kafka.type = RollingFile
appender.kafka.name = kafka
appender.kafka.fileName = ${sys:kafka.logs.dir}/server.log
appender.kafka.filePattern = ${sys:kafka.logs.dir}/server-%d{yyyy-MM-dd}-%i.log.gz
appender.kafka.layout.type = PatternLayout
appender.kafka.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
appender.kafka.policies.type = Policies
appender.kafka.policies.time.type = TimeBasedTriggeringPolicy
appender.kafka.policies.size.type = SizeBasedTriggeringPolicy
appender.kafka.policies.size.size = 100MB
appender.kafka.strategy.type = DefaultRolloverStrategy
appender.kafka.strategy.max = 10# 根日志配置
rootLogger.level = INFO
rootLogger.appenderRefs = console, kafka
rootLogger.appenderRef.console.ref = console
rootLogger.appenderRef.kafka.ref = kafka# Kafka 日志配置
logger.kafka.name = kafka
logger.kafka.level = INFO
logger.kafka.additivity = false
logger.kafka.appenderRefs = console, kafka
logger.kafka.appenderRef.console.ref = console
logger.kafka.appenderRef.kafka.ref = kafka

4. 部署步驟

4.1 初始步驟

1. 下載 Kafka 4.x 版本(本文檔基于 kafka_2.13-4.0.0)

2. 解壓到 D:\kafka_2.13-4.0.0

3. 創建必要的目錄:

mkdir D:\kafka_2.13-4.0.0\logs
mkdir D:\kafka_2.13-4.0.0\config\ssl

4. 創建配置文件(server.properties、ssl.properties、jaas.conf、log4j2.properties)

4.2 生成 SSL 證書

運行以下命令生成 SSL 證書:

# 1. 生成 CA 私鑰和證書
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365 -nodes -subj "/CN=kafka-ca"# 2. 生成服務器私鑰
openssl genrsa -out kafka.server.key 2048# 3. 生成服務器證書簽名請求(CSR)
openssl req -new -key kafka.server.key -out kafka.server.csr -subj "/CN=localhost"# 4. 使用 CA 證書簽名服務器證書
openssl x509 -req -CA ca-cert -CAkey ca-key -in kafka.server.csr -out kafka.server.cert -days 365 -CAcreateserial# 5. 創建 JKS 格式的密鑰庫
keytool -import -alias ca -file ca-cert -keystore kafka.server.truststore.jks -storepass kafka123 -noprompt
keytool -import -alias server -file kafka.server.cert -keystore kafka.server.keystore.jks -storepass kafka123 -noprompt# 6. 將私鑰導入密鑰庫
openssl pkcs12 -export -in kafka.server.cert -inkey kafka.server.key -out kafka.server.p12 -name server -password pass:kafka123
keytool -importkeystore -srckeystore kafka.server.p12 -srcstoretype PKCS12 -destkeystore kafka.server.keystore.jks -deststoretype JKS -srcstorepass kafka123 -deststorepass kafka123# 7. 移動證書文件到配置目錄
move kafka.server.keystore.jks config\ssl\
move kafka.server.truststore.jks config\ssl\

4.3 格式化存儲目錄

在啟動 Kafka 服務前,需要格式化存儲目錄,確保 meta.properties 正確生成:

bin\windows\kafka-storage.bat random-uuid
bin\windows\kafka-storage.bat format -t  -c config\server.properties

4.4 啟動 Kafka 服務

運行以下命令啟動 Kafka 服務:

start-kafka-kraft.bat

5. 客戶端連接示例

5.1 Java 客戶端配置

bootstrap.servers=localhost:9095
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
ssl.truststore.location=你的truststore路徑
ssl.truststore.password=kafka123

5.2 命令行工具配置

使用以下命令創建主題:

bin\windows\kafka-topics.bat --create --topic test-topic --bootstrap-server localhost:9095 --command-config config\client.properties

6. 常見問題

  • 問題:?No `meta.properties` found in logs directory
    解決:?運行?kafka-storage.bat format?命令格式化存儲目錄。
  • 問題:?ClassNotFoundException: kafka.security.authorizer.AclAuthorizer
    解決:?將?authorizer.class.name?修改為?org.apache.kafka.metadata.authorizer.StandardAuthorizer
  • 問題:?Log4j 配置錯誤
    解決:?確保使用 Log4j2 配置文件,并在啟動腳本中正確設置?KAFKA_LOG4J_OPTS

7. 參考鏈接

  • Kafka 安全文檔
  • Log4j 遷移指南

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

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

相關文章

MQTT協議,EMQX部署,MQTTX安裝學習

一、MQTT概述 1.什么是MQTT MQTT是一種基于“發布訂閱“”模式的消息傳輸協議。 消息:設備和設備之間傳輸的數據,或者服務和服務之間要傳輸的數據。 協議:傳輸數據時所遵循的規范。 2.常見的通訊模式 (1)客戶端-服…

Java Web 開發詳細流程

🧭 一、項目立項與需求分析階段(0%) 1.1 商業需求確認 與產品經理溝通核心業務目標 目標:構建一個圖書管理系統用戶:圖書管理員、普通用戶功能:登錄、查看、增刪改圖書、權限控制、分頁、搜索 1.2 輸出文…

學習路之PHP--easyswoole_panel安裝使用

學習路之PHP--easyswoole_panel安裝使用 一、新建文件夾二、安裝三、改配置地址四、訪問 IP:Port 自動進入index.html頁面 一、新建文件夾 /www/wwwroot/easyswoole_panel 及配置ftp 解壓easyswoole_panel源碼 https://github.com/easyswoole-panel/easyswoole_panel 二、安…

軟件設計綜合知識

software-design 軟考中級-軟件設計師-綜合知識:計算機系統基礎、操作系統、計算機網絡與信息安全、程序語言基礎、數據庫基礎、數據結構與算法、軟件工程基礎知識、標準與知識產權等。 —— 2025 年 3 月 5 日 甲辰年二月初六 驚蟄 目錄 software-design1、計算機基…

海思 35XX MIPI讀取YUV422

1.項目背景: 使用海思芯片,接收FPGA發送的MIPI數據,不需要ISP處理,YUV圖像格式為YUV422。 2.移植MIPI驅動 修改IMX347的驅動遠嗎,將I2C讀寫的部分注釋,其他的不用再做修改。 int imx347_slave_i2c_init(ot…

算力租賃革命:彈性模式如何重構數字時代的創新門檻?

一、算力革命:第四次工業革命的核心驅動力? 在科技飛速發展的當下,我們正悄然迎來第四次工業革命。華為創始人任正非在一場程序設計競賽中曾深刻指出,這場革命的基礎便是大算力。隨著 5G、人工智能、大數據、物聯網等信息技術的迅猛發展&am…

改寫自己的瀏覽器插件工具 myChromeTools

1. 起因, 目的: 前面我寫過, 自己的一個瀏覽器插件小工具 最近又增加一個小功能,可以自動滾動頁面,尤其是對于那些瀑布流加載的網頁。最新的代碼都在這里 2. 先看效果 3. 過程: 代碼 1, 模擬鼠標自然滾動 // 處理滾動控制邏輯…

深度學習篇---OC-SORT簡介

OC-SORT(Observation-Centric SORT)是一種以觀測為中心的多目標跟蹤算法,旨在解決傳統 SORT 算法在目標遮擋、外觀變化和復雜交互場景下關聯準確性不足的問題。以下是其詳細介紹: 核心創新點 以觀測為中心的在線平滑&#xff08…

硬件工程師筆記——二極管Multisim電路仿真實驗匯總

目錄 1 二極管基礎知識 1.1 工作原理 1.2 二極管的結構 1.3 PN結的形成 1.4 二極管的工作原理詳解 正向偏置 反向偏置 multisim使用說明鏈接 2 二極管特性實驗 2.1 二極管加正向電壓 2.2 二極管加反向電壓 2.3 二極管兩端的電阻 2.4 交流電下二級管工作 2.5 二極…

vscode中讓文件夾一直保持展開不折疊

vscode中讓文件夾一直保持展開不折疊 問題 很多小伙伴使用vscode發現空文件夾會折疊顯示, 讓人看起來非常難受, 如下圖 解決辦法 首先打開設置->setting, 搜索compact Folders, 去掉勾選即可, 如下圖所示 效果如下 看起來非常爽 ! ! !

設計模式學習筆記

設計模式 一:分類: 創建型模式 用于描述“怎樣創建對象”,它的主要特點是“將對象的創建與使用分離”。GoF(四人組)書中提供了單例、原型、工廠方法、抽象工廠、建造者等 5 種創建型模式。 結構型模式 用于描述如何將…

Kaggle-Predict Calorie Expenditure-(回歸+xgb+cat+lgb+模型融合+預測結果)

Predict Calorie Expenditure 題意: 給出每個人的基本信息,預測運動后的卡路里消耗值。 數據處理: 1.構造出人體機能、運動相關的特征值。 2.所有特征值進行從新組合,注意唯獨爆炸 3.對連續信息分箱變成離散 建立模型&#x…

第十二篇:MySQL 分布式架構演進與云原生數據庫探索

本篇聚焦 MySQL 在互聯網架構演進過程中的角色變化,探討其從單體向分布式、再向云原生架構轉型的關鍵技術路徑與實踐建議。 一、傳統單體架構下的 MySQL 應用模式 在早期項目中,MySQL 多用于中小型應用: 單節點部署; 水平擴展難…

JVM——回顧:JVM的起源、特性與系統構成

引入 在當今數字化時代,Java語言及其運行環境Java虛擬機(JVM)在軟件開發領域占據著舉足輕重的地位。從大型企業級應用到各類移動應用,JVM憑借其獨特的特性和強大的功能,為開發者提供了高效且穩定的運行環境。 JVM的起…

大疆上云API+流媒體服務器部署實現直播功能

根據官網文檔上云API,先將官方提供的Demo部署起來,后端和前端服務環境搭建請參考官方文檔。因為官方文檔沒有對直播這塊的環境搭建進行說明,所以下面主要對直播功能環境搭建做一個記錄,僅供參考,如有不足之處&#xff…

計算機網絡 HTTP篇常見面試題總結

HTTP各版本區別 HTTP 1.0 無狀態、無連接:每次請求都需要建立新的 TCP,處理完后立即關閉,導致開銷較大。隊頭阻塞:每個請求必須按照順序依次處理,前面的請求未完成,后面的請求只能等待,減低了…

目標檢測:YOLO 模型詳解

目錄 一、YOLO(You Only Look Once)模型講解 YOLOv1 YOLOv2 (YOLO9000) YOLOv3 YOLOv4 YOLOv5 YOLOv6 YOLOv7 YOLOv8 YOLOv9 YOLOv10 YOLOv11 YOLOv12 其他變體:PP-YOLO 二、YOLO 模型的 Backbone:Focus 結構 三、…

開源 FcDesigner 表單設計器組件事件詳解

FcDesigner 是一款基于Vue的開源低代碼可視化表單設計器工具,通過數據驅動表單渲染。可以通過拖拽的方式快速創建表單,提高開發者對表單的開發效率,節省開發者的時間。并廣泛應用于在政務系統、OA系統、ERP系統、電商系統、流程管理等領域。 …

關于 smali:2. 從 Java 到 Smali 的映射

一、對照 Java 代碼與 Smali 代碼差異 1.1 方法調用差異:Java vs Smali Java 方法分類: 方法類型Java 示例Smali 指令特點說明靜態方法Utils.print("hi")invoke-static沒有 this 指針實例方法obj.show()invoke-virtual有 this,虛…

2025年05月29日Github流行趨勢

項目名稱:agenticSeek 項目地址url:https://github.com/Fosowl/agenticSeek項目語言:Python歷史star數:11898今日star數:2379項目維護者:Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…