Docker 運行 Kafka 帶 SASL 認證教程

Docker 運行 Kafka 帶 SASL 認證教程

  • Docker 運行 Kafka 帶 SASL 認證教程
    • 一、說明
    • 二、環境準備
    • 三、編寫 Docker Compose 和 jaas文件
      • docker-compose.yml
      • 代碼說明:
      • server_jaas.conf
    • 四、啟動服務
    • 五、驗證服務
    • 六、連接kafka服務
    • 七、總結

Docker 運行 Kafka 帶 SASL 認證教程

一、說明

Kafka 是一個高性能、分布式的消息隊列系統,在生產環境中,為了保證數據的安全性,通常需要對 Kafka 進行認證。SASL(Simple Authentication and Security Layer)是一種用于在應用層協議中提供認證和數據安全服務的機制,下面詳細介紹如何使用 Docker 運行 Kafka 并開啟 SASL_PLAINTEXT 認證。
代碼文件已經運行及調試成功 成功運行時間:2025-6-10 。

當前kafka 服務 IP 為:192.168.188.224 以下涉及此 IP,都需要統一將 IP 替換為實際的 kafka 服務 IP。

二、環境準備

在開始之前,確保你已經安裝了 DockerDocker Compose。可以通過以下命令檢查是否安裝成功:

docker --version
docker-compose --version

三、編寫 Docker Compose 和 jaas文件

以下是一個完整的 docker-compose.yml 文件,用于啟動 ZookeeperKafkaKafdrop(Kafka 監控工具),并開啟 SASL PLAINTEXT認證:

docker-compose.yml

version: '3'
services:zookeeper:image: wurstmeister/zookeeper:latestvolumes:- /Users/tyy/Downloads/Guoye/docker-compose/kafka/server_jaas.conf:/etc/kafka/server_jaas.confcontainer_name: zookeeperenvironment:ZOOKEEPER_CLIENT_PORT: 2181ZOOKEEPER_TICK_TIME: 2000SERVER_JVMFLAGS: -Djava.security.auth.login.config=/etc/kafka/server_jaas.confports:- 2181:2181restart: alwayskafka:image: wurstmeister/kafka:latestcontainer_name: kafkadepends_on:- zookeeperports:- 9092:9092volumes:- /Users/tyy/Downloads/Guoye/docker-compose/kafka/server_jaas.conf:/etc/kafka/server_jaas.confenvironment:KAFKA_BROKER_ID: 0KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181KAFKA_LISTENERS: INTERNAL://:9093,EXTERNAL://:9092KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9093,EXTERNAL://${KAFKA_HOST:-192.168.188.224}:9092KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXTALLOW_PLAINTEXT_LISTENER: 'yes'KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'KAFKA_INTER_BROKER_LISTENER_NAME: INTERNALKAFKA_SASL_ENABLED_MECHANISMS: PLAINKAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAINKAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/server_jaas.confrestart: always##  kafdrop 監控kafka的Ui工具kafdrop:image: obsidiandynamics/kafdroprestart: alwaysports:- "19001:9000"environment:KAFKA_BROKERCONNECT: "kafka:9093"## 如kafka開啟了sasl認證后以下 sasl認證鏈接是必要的,下面的事經過base64加密后的結果KAFKA_PROPERTIES: c2FzbC5tZWNoYW5pc206IFBMQUlOCiAgICAgIHNlY3VyaXR5LnByb3RvY29sOiBTQVNMX1BMQUlOVEVYVAogICAgICBzYXNsLmphYXMuY29uZmlnOiBvcmcuYXBhY2hlLmthZmthLmNvbW1vbi5zZWN1cml0eS5zY3JhbS5TY3JhbUxvZ2luTW9kdWxlIHJlcXVpcmVkIHVzZXJuYW1lPSdhZG1pbicgcGFzc3dvcmQ9JzJjUnZoTHNNY0lXeE1WczZ2WCc7depends_on:- zookeeper- kafkacpus: '1'mem_limit: 1024mcontainer_name: kafdrop

代碼說明:

  1. Zookeeper 服務

    • image: wurstmeister/zookeeper:latest:使用最新版本的 Zookeeper 鏡像。
    • volumes:將本地的 server_jaas.conf 文件掛載到容器的 /etc/kafka/server_jaas.conf 路徑,用于 SASL 認證配置。
    • environment:設置 Zookeeper 的客戶端端口和 Tick 時間,并指定 JVM 啟動參數,加載 SASL 認證配置文件。
    • ports:將容器的 2181 端口映射到宿主機的 2181 端口。
  2. Kafka 服務

    • image: wurstmeister/kafka:latest:使用最新版本的 Kafka 鏡像。
    • depends_on:表示 Kafka 服務依賴于 Zookeeper 服務。
    • ports:將容器的 9092 端口映射到宿主機的 9092 端口。
    • volumes:同樣掛載 server_jaas.conf 文件。
    • environment
      • KAFKA_BROKER_ID:指定 Kafka 代理的 ID。
      • KAFKA_ZOOKEEPER_CONNECT:指定 Zookeeper 的連接地址。
      • KAFKA_LISTENERSKAFKA_ADVERTISED_LISTENERS:定義 Kafka 的監聽地址和對外公布的地址,分別設置了內部和外部監聽端口,默認配置了 IP192.168.188.224(需修改為你的 kafka 服務器 IP),也可運行時定義變量值IP 地址KAFKA_HOST
      • KAFKA_LISTENER_SECURITY_PROTOCOL_MAP:指定監聽端口的安全協議為 SASL_PLAINTEXT。
      • KAFKA_SASL_ENABLED_MECHANISMSKAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL:啟用 PLAIN 認證機制。
      • KAFKA_OPTS:指定 JVM 啟動參數,加載 SASL 認證配置文件。
  3. Kafdrop 服務

    • image: obsidiandynamics/kafdrop:使用 Kafdrop 鏡像,用于監控 Kafka。
    • ports:將容器的 9000 端口映射到宿主機的 19001 端口。
    • environment
      • KAFKA_BROKERCONNECT:指定 Kafka 的連接地址。
      • KAFKA_PROPERTIES:經過 Base64 加密的 SASL 認證配置信息。
  4. 當前鏡像image 版本
    避免在生產環境使用latest,應指定版本號或 sha256

wurstmeister/kafka          latest                                   sha256:2d4bbf9cc83d9854d36582987da5f939fb9255fb128d18e3cf2c6ad825a32751   a692873757c0   3 years ago     468MB
wurstmeister/zookeeper      latest                                   sha256:7a7fd44a72104bfbd24a77844bad5fabc86485b036f988ea927d1780782a6680   3f43f72cb283   6 years ago     510MB
obsidiandynamics/kafdrop    latest                                   sha256:6a2580833bafc05bfadb291d2be97b7c6c5e0e15238f8bdc4548310f4902bb68   b51547d96130   6 months ago    495MB

server_jaas.conf

Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername = "admin"password = "2cRvhLsMcIWxMVs6vX";
};
Server {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername = "admin"password = "2cRvhLsMcIWxMVs6vX"user_super = "2cRvhLsMcIWxMVs6vX"user_admin = "2cRvhLsMcIWxMVs6vX";
};
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername = "admin"password = "2cRvhLsMcIWxMVs6vX"user_admin = "2cRvhLsMcIWxMVs6vX";
};
KafkaClient {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername = "admin"password = "2cRvhLsMcIWxMVs6vX";
};

四、啟動服務

將上述 docker-compose.yml 文件保存到本地,然后在終端中執行以下命令啟動服務:

# 使用默認IP
docker-compose up -d# 配置 kafka 服務器 IP 運行
KAFKA_HOST=192.168.16.10 docker-compose up -d

-d 參數表示在后臺運行容器。

五、驗證服務

  1. 檢查容器是否正常運行:
docker ps

確保 ZookeeperKafkaKafdrop 容器都處于運行狀態。

  1. 訪問 Kafdrop 監控界面:
    打開瀏覽器,訪問 http://192.168.188.224:19001,如果能夠正常訪問并看到 Kafka 的相關信息,說明服務已經成功啟動。

  2. ZookeeperKafka 容器運行狀態異常,請查看日志進行問題排查

# 查看容器日志
docker logs 容器名稱
docker logs zookeeper
docker logs kafka
docker logs kafdrop

六、連接kafka服務

Mac 可使用 Offset Explorer3進行連接 kafka
軟件下載地址:https://www.kafkatool.com/download.html

  1. 配置kafka IP,當前 IP 為 192.168.188.224
    在這里插入圖片描述

  2. 選擇認證類型 SASL Plaintext
    在這里插入圖片描述

  3. 設置sasl.mechanism為PLAIN
    在這里插入圖片描述

  4. 設置認證信息
    org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="2cRvhLsMcIWxMVs6vX";
    在這里插入圖片描述

  5. 保存并連接
    在這里插入圖片描述

  6. 連接成功,狀態變為綠色
    在這里插入圖片描述

七、總結

在實際生產環境中,你可以根據需要調整 docker-compose.yml 文件中的配置,以滿足不同的需求。同時,要注意保護好 server_jaas.conf 文件,避免泄露認證信息。

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

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

相關文章

??CentOS 7.9?? 上配置 ??Fail2ban 自動封禁 IP?? 的完整步驟,整合了多篇權威資料的最佳實踐

🔧 ??一、安裝 Fail2ban?? ??啟用 EPEL 倉庫?? yum install epel-release -y ??安裝 Fail2ban?? yum install fail2ban -y ??啟動并設置開機自啟?? systemctl start fail2ban systemctl enable fail2ban ?? 注意:CentOS 7.9 默認 Py…

損壞的RAID5 第十六次CCF-CSP計算機軟件能力認證

純大模擬 提前打好板子 我只通過4個用例點 然后就超時了。 #include<iostream> #include<cstring> #include<algorithm> #include<unordered_map> #include<bits/stdc.h> using namespace std; int n, s, l; unordered_map<int, string>…

Kafka Topic中的數據在消費后還存在嗎

在 Kafka 的主題(Topic)和分區(Partition)中,數據在被消費者消費后是否仍然存在,取決于 Kafka 的設計機制和配置策略。

Linuxkernel學習-deepseek-2

以下是國際上廣受好評的 Linux 內核權威公開課&#xff0c;均來自頂級高校和技術組織&#xff0c;附課程鏈接和特色說明&#xff1a; —### 一、殿堂級大學課程1. MIT 6.S081: Operating System Engineering - 核心&#xff1a;基于 RISC-V 架構 重寫 Unix 內核&#xff08;xv6…

高頻面試之6Hive

Hive 文章目錄 Hive6.1 Hive的架構6.2 HQL轉換為MR流程6.3 Hive和數據庫比較6.4 內部表和外部表6.5 系統函數6.6 自定義UDF、UDTF函數6.7 窗口函數6.8 Hive優化6.8.1 分組聚合6.8.2 Map Join6.8.3 SMB Map Join6.8.4 Reduce并行度6.8.5 小文件合并6.8.6 謂詞下推6.8.7 并行執行…

分類場景數據集大全「包含數據標注+訓練腳本」 (持續原地更新)

一、作者介紹&#xff1a;六年算法開發經驗、AI 算法經理、阿里云專家博主。擅長&#xff1a;檢測、分割、理解、大模型 等算法訓練與推理部署任務。 二、數據集介紹&#xff1a; 質量高&#xff1a;高質量圖片、高質量標注數據&#xff0c;吐血標注、整理&#xff0c;可以作為…

從硬件視角審視Web3安全:CertiK CTO主持Proof of Talk圓桌論壇

6月10日&#xff0c;在備受矚目的全球Web3與AI峰會Proof of Talk 2025上&#xff0c;CertiK首席技術官Li Kang博士主持了一場聚焦“Web3錢包與托管安全”&#xff08;Web3 Wallet and Custodial Security&#xff09;的圓桌論壇。本次論壇從硬件與系統軟件的底層視角出發&#…

從DevOps到AIOps:智能體如何接管持續交付流程

引言&#xff1a;從DevOps到AIOps的時代躍遷 DevOps 作為軟件開發與運維一體化的最佳實踐&#xff0c;已經廣泛應用于現代軟件工程體系中。在 CI/CD&#xff08;持續集成/持續交付&#xff09;的支撐下&#xff0c;軟件交付從季度變為月度、從周變為日&#xff0c;乃至分鐘級更…

MAC-安裝Homebrew、安裝Git

1.首先嘗試用中科大和清華的源發現不行 中國科學技術大學(USTC)提供了 Homebrew 的鏡像倉庫,同步官方更新,適合國內用戶。 安裝命令??: /bin/bash -c "$(curl -fsSL https://mirrors.ustc.edu.cn/brew/install.sh)" 步驟說明??: 復制上述命令到終端,按…

flutter基礎面試知識匯總(二)

一、全局狀態管理工具-----GetX、Provider、Bloc 1.Provider Provider 是 Flutter 中一個流行的狀態管理庫&#xff0c;它簡化了數據共享和狀態管理的過程。它通過依賴注入的方式&#xff0c;讓不同的 Widget 共享數據&#xff0c;而無需過多地傳遞參數。Provider也是官方推薦…

基于YOLOv12的電力高空作業安全檢測:為電力作業“保駕護航”,告別安全隱患!

在電力行業&#xff0c;尤其是高空作業場景&#xff0c;安全隱患無處不在。高空作業本身就存在著極高的風險&#xff0c;尤其是對于電力維護和檢修工作來說&#xff0c;稍有不慎便可能造成嚴重的安全事故。傳統的安全監管方式&#xff0c;如人工巡檢和視頻監控&#xff0c;存在…

大話軟工筆記—需求分析匯總

需求調研和分析完成&#xff0c;可匯總形成兩份文檔&#xff1a;需求規格說明書和解決方案。 1. 需求規格說明書 1.1 主要內容 引言&#xff0c;包括項目目的、背景、用語等基礎信息。項目概述&#xff0c;對項目自身的說明、包括范圍、主要處理對象、與其他系統的關系等。功…

openstack實例創建過程分析

用戶驗證 1、某用戶以登錄web界面或執行rc文件的方式&#xff0c;通過RESTful API向keystone獲取credentials&#xff1b; 2、keystone進行authentication&#xff0c;若正確則生成并返回auth-token&#xff1b; 3、以攜帶auth-token的形式&#xff0c;在web界面或命令行cli&a…

安卓首次啟動Fallbackhome是否可以直接去除?--學員作業

背景&#xff1a; 有學員朋友在vip群提出一個需求相關的問題&#xff0c;他想要把settings裁剪掉&#xff0c;但是發現裁剪后Fallbackhome肯定就沒了&#xff0c;發現Launcher居然無法啟動了&#xff0c;一直處于Bootanimation的畫面&#xff0c;無法進入系統。 針對這個去除…

C++ 實現環形緩沖區

環形緩沖區&#xff08;Ring Buffer&#xff09;是一種常見的用于數據流緩沖的結構&#xff0c;通常用于生產者-消費者模型、音視頻處理等場景。 因為環形緩沖區使用的場景大多為性能敏感的場景&#xff0c;我們采用數組的數據結構和位運算來實現&#xff0c;以提高代碼效率。…

MySQL虛擬列:一個被低估的MySQL特性

前言 最近在做訂單系統重構時&#xff0c;遇到了一個有趣的問題。 系統里有很多地方都要計算訂單的總價&#xff08;數量單價&#xff09;&#xff0c;這個計算邏輯分散在各個服務中&#xff0c;產生了不少相似甚至重復的代碼。 代碼評審時&#xff0c;同事提出了一個建議 —…

音頻導入規范

一般音頻可以交給策劃來導入提交&#xff0c;需要遵循一些規范&#xff0c;下面是我們實際項目用到的一些規范 1、Force To Mono&#xff1a; 勾選&#xff0c;強制單聲道。&#xff08;可以減少音效文件的內存占用&#xff09; 2、Normalize&#xff1a; 勾選&#xff0c;引…

使用html寫一個倒計時頁面

一個使用 HTML、CSS 和 JavaScript 實現的倒計時頁面,包含動態效果和響應式布局: 功能特點: 動態效果: 每個時間單元帶有 hover 動畫(懸浮時輕微上浮)倒計時數字實時更新,精確到秒結束時自動更換背景顏色并顯示提示信息響應式設計: 適配移動端屏幕(屏幕寬度小于600px…

spring boot源碼和lib分開打包

1.項目通過maven引入的jar多了之后&#xff0c;用maven打出的jar會非常龐大&#xff0c;我的是因為引入了ffmpeg的相關jar,所以&#xff0c;每次上傳服務更新都要傳輸好久&#xff0c;修改maven打包方式&#xff0c;改為源碼和lib分離模式 2.maven的pom.xml配置如下 <build…

計算機網絡筆記(三十)——5.2用戶數據報協議UDP

5.2.1UDP概述 一、UDP 的定義 用戶數據報協議 (User Datagram Protocol, UDP) 是傳輸層的無連接、不可靠協議。它提供最小化的協議機制&#xff0c;僅支持數據報的簡單傳輸&#xff0c;不保證數據順序或可靠性。 二、UDP 的核心特點 無連接 通信前無需建立連接&#xff0c;直…