【Kafka基礎】Kafka 2.8以下版本的安裝與配置指南:傳統ZooKeeper依賴版詳解

對于仍在使用Kafka 2.8之前版本的團隊來說,需要特別注意其強依賴外部ZooKeeper的特性。本文將完整演示傳統架構下的安裝流程,并對比新舊版本差異。

1 版本特性差異說明

1.1 2.8+ vs 2.8-核心區別

特性

2.8+版本

2.8-版本

協調服務

可選內置KRaft模式

強制依賴外部ZooKeeper集群

部署復雜度

單進程即可運行

需獨立維護ZK集群

元數據性能

吞吐提升20%+

受ZK性能制約

推薦生產版本

≥3.0

≤2.7.x

2 安裝準備(以2.7.1為例)

2.1 組件下載

Kafka下載地址:Index of /dist/kafka/2.7.1

Zookeeper下載地址:Index of /dist/zookeeper

2.2. 解壓安裝包以及目錄結構

# 解壓kafka安裝包
tar -zxvf kafka_2.13-2.7.1.tgz -C kafka_zk/
# 解壓zk安裝包
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C kafka_zk/# 目錄結構
[root@node5 kafka_zk]# tree -L 2
.
├── apache-zookeeper-3.6.3-bin
│   ├── bin
│   ├── conf
│   ├── data
│   ├── docs
│   ├── lib
│   ├── LICENSE.txt
│   ├── logs
│   ├── NOTICE.txt
│   ├── README.md
│   └── README_packaging.md
└── kafka_2.13-2.7.1├── bin├── config├── libs├── LICENSE├── licenses├── logs├── NOTICE└── site-docs14 directories, 6 files
[root@node5 kafka_zk]# # 各個目錄用途解釋
.
├── apache-zookeeper-3.6.3-bin          # ZooKeeper 安裝目錄
│   ├── bin                             # ZooKeeper 可執行腳本(啟動/停止/運維)
│   ├── conf                            # ZooKeeper 配置文件(zoo.cfg 等)
│   ├── data                            # ZooKeeper 數據存儲目錄(手動創建)
│   ├── docs                            # ZooKeeper 官方文檔
│   ├── lib                             # ZooKeeper 運行時依賴庫(JAR 文件)
│   ├── LICENSE.txt                     # Apache 2.0 許可證文件
│   ├── logs                            # ZooKeeper 運行日志(自動生成)
│   ├── NOTICE.txt                      # 第三方組件版權聲明
│   ├── README.md                       # 項目說明文件
│   └── README_packaging.md             # 打包說明文件
└── kafka_2.13-2.7.1                    # Kafka 安裝目錄├── bin                             # Kafka 管理腳本(啟動/主題操作等)├── config                          # Kafka 配置文件(server.properties 等)├── libs                            # Kafka 依賴庫(核心 JAR 文件)├── LICENSE                         # Apache 2.0 許可證文件├── licenses                        # 第三方依賴的許可證文件├── logs                            # Kafka 運行日志(需手動創建或自動生成)├── NOTICE                          # 項目版權聲明└── site-docs                       # Kafka 離線文檔(HTML 格式)

3 ZooKeeper獨立部署

3.1 編輯配置文件

# 編輯conf/zoo.cfg:備份conf/zoo.cfg文件并添加如下內容
cp conf/zoo.cfg conf/zoo.cfg_bak
cat >conf/zoo.cfg<<EOF
# ZooKeeper 基礎配置
tickTime=2000
initLimit=10
syncLimit=5# 數據存儲目錄(需提前創建并賦予權限)
dataDir=/export/home/kafka_zk/apache-zookeeper-3.6.3-bin/data
dataLogDir=/export/home/kafka_zk/apache-zookeeper-3.6.3-bin/logs# 客戶端連接端口
clientPort=2181# 單機模式無需集群配置
# server.1=ip:port:port (集群模式下需配置)# 高級優化(可選)
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=24
admin.serverPort=8080
maxClientCnxns=60
EOF

3.2 啟動與驗證

# 啟動ZK(后臺模式)
bin/zkServer.sh start conf/zoo.cfg# 驗證狀態
echo srvr | nc 192.168.10.34 2181[root@node5 apache-zookeeper-3.6.3-bin]# echo srvr | nc 192.168.10.34 2181
Zookeeper version: 3.6.3--6401e4ad2087061bc6b9f80dec2d69f2e3c8660a, built on 04/08/2021 16:35 GMT
Latency min/avg/max: 0/0.0/0
Received: 3
Sent: 2
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 5
[root@node5 apache-zookeeper-3.6.3-bin]# 

4 Kafka服務配置

4.1 編輯配置文件

# 編輯config/server.properties文件:備份文件并添加如下內容
cp config/server.properties config/server.properties_bak
cat >config/server.properties<<EOF
############################ 基礎配置 #############################
# Broker唯一標識(單機保持默認)
broker.id=0# 監聽地址(必須配置為實際IP或主機名,不能用0.0.0.0)
listeners=PLAINTEXT://192.168.10.34:9092
advertised.listeners=PLAINTEXT://192.168.10.34:9092# 日志存儲目錄(需提前創建并賦權)
log.dirs=/export/home/kafka_zk/kafka_2.13-2.7.1/logs# ZooKeeper連接地址(單機模式)
zookeeper.connect=192.168.10.34:2181############################# 單機特殊配置 #############################
# 強制內部Topic副本數為1(單機必須配置!)
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1# 禁用自動創建Topic(生產環境建議)
auto.create.topics.enable=false############################# 性能優化 #############################
# 網絡線程數(建議CPU核數)
num.network.threads=2# IO線程數(建議2*CPU核數)
num.io.threads=4# 日志保留策略
log.retention.hours=168      # 保留7天
log.segment.bytes=1073741824 # 單個日志段1GB
log.retention.check.interval.ms=300000 # 檢查間隔5分鐘# 消息持久化
flush.messages=10000         # 每10000條消息刷盤
flush.ms=1000                # 每秒刷盤一次############################# 高級調優 #############################
# Socket緩沖區大小
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400# 副本同步設置(單機可忽略)
default.replication.factor=1
min.insync.replicas=1# 控制器配置
controller.socket.timeout.ms=30000
EOF

4.2 編寫啟動腳本

# 創建bin/start-kafka.sh避免內存不足
#!/bin/bash
export KAFKA_HEAP_OPTS="-Xms1G -Xmx1G"
export JMX_PORT=9999
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-server-start.sh /export/home/kafka_zk/kafka_2.13-2.7.1/config/server.properties
chmod +x bin/start-kafka.sh

4.3 啟動服務并驗證

# 啟動 
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/start-kafka.sh
# 創建topic并查看詳情
# 創建名為test的Topic,1分區1副本
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --create \--bootstrap-server 192.168.10.34:9092 \--replication-factor 1 \--partitions 1 \--topic test[root@node5 ~]# /export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --create \
>   --bootstrap-server 192.168.10.34:9092 \
>   --replication-factor 1 \
>   --partitions 1 \
>   --topic test
Created topic test.
[root@node5 ~]# # 查看Topic詳情
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --describe --topic test --bootstrap-server 192.168.10.34:9092[root@node5 ~]# /export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-topics.sh --describe --topic test --bootstrap-server 192.168.10.34:9092Topic: test     PartitionCount: 1       ReplicationFactor: 1    Configs: min.insync.replicas=1,segment.bytes=1073741824Topic: test     Partition: 0    Leader: 0       Replicas: 0     Isr: 0
[root@node5 ~]# 

5 版本特定問題解決

5.1 ZooKeeper連接超時

現象:Session expired錯誤

# 增加server.properties參數 
zookeeper.session.timeout.ms=18000 
zookeeper.connection.timeout.ms=15000

5.2. 磁盤寫性能低下

# 禁用完全刷盤(犧牲部分可靠性) 
log.flush.interval.messages=10000 
log.flush.interval.ms=1000

5.3 監控指標缺失

# 啟用JMX導出
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999"
/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-server-start.sh /export/home/kafka_zk/kafka_2.13-2.7.1/bin/server.properties

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

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

相關文章

springboot+easyexcel實現下載excels模板下拉選擇

定義下拉注解 Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface ExcelDropDown {/*** 固定下拉選項*/String[] source() default {};/*** 動態數據源key&#xff08;從上下文中獲取&#xff09;*/String sourceMethod() default "";…

第15周:注意力匯聚:Nadaraya-Watson 核回歸

注意力匯聚&#xff1a;Nadaraya-Watson 核回歸 Nadaraya-Watson 核回歸是一個經典的注意力機制模型&#xff0c;它展示了如何通過注意力權重來對輸入數據進行加權平均。以下是該內容的核心總結&#xff1a; 關鍵概念 注意力機制框架&#xff1a;由查詢&#xff08;自主提示…

adb devices報錯 ADB server didn‘t ACK

ubuntu下連接手機首次使用adb devices 報錯ADB server didn’t ACK adb devices * daemon not running; starting now at tcp:5037 ADB server didnt ACK Full server startup log: /tmp/adb.1000.log Server had pid: 52986 --- adb starting (pid 52986) --- 04-03 17:23:23…

Mac下Homebrew的安裝與使用

Mac下Homebrew的安裝與使用 一蓑煙羽 關注 2017.10.19 11:59* 字數 515 閱讀 7684評論 0喜歡 3 Homebrew簡介&#xff0c;安裝與使用 簡介 Homebrew 官方網站 Homebrew是一個包管理器&#xff0c;用于安裝Apple沒有預裝但你需要的UNIX工具。&#xff08;比如著名的wget&am…

非常適合做后臺項目的go腳手架

分享一個非常適合做后臺腳手架的go項目&#xff0c;該項目使用gin作為mvc框架搭建。她就是Gin-vue-admin。該一個基于 vue 和 gin 開發的全棧前后端分離的開發基礎平臺&#xff0c;集成jwt鑒權&#xff0c;動態路由&#xff0c;動態菜單&#xff0c;casbin鑒權&#xff0c;表單…

優化 Django 數據庫查詢

優化 Django 數據庫查詢 推薦超級課程: 本地離線DeepSeek AI方案部署實戰教程【完全版】Docker快速入門到精通Kubernetes入門到大師通關課AWS云服務快速入門實戰目錄 優化 Django 數據庫查詢**理解 N+1 查詢問題****`select_related`:外鍵的急加載**示例何時使用 `select_re…

大數據(5)Spark部署核彈級避坑指南:從高并發集群調優到源碼級安全加固(附萬億級日志分析實戰+智能運維巡檢系統)

目錄 背景一、Spark核心架構拆解1. 分布式計算五層模型 二、五步軍工級部署階段1&#xff1a;環境核彈級校驗階段2&#xff1a;集群拓撲構建階段3&#xff1a;黃金配置模板階段4&#xff1a;高可用啟停階段5&#xff1a;安全加固方案 三、萬億級日志分析實戰1. 案例背景&#x…

【學Rust寫CAD】36 顏色插值函數(alpha256.rs補充方法)

源碼 pub fn alpha_lerp(self,src: Argb, dst: Argb, clip: u32) -> Argb {self.alpha_mul_256(clip).lerp(src, dst)}這個函數 alpha_lerp 是一個顏色插值&#xff08;線性插值&#xff0c;lerp&#xff09;函數&#xff0c;它結合了透明度混合&#xff08;alpha_mul_256&…

解決Ubuntu系統鼠標不流暢的問題

電腦是聯想的臺式組裝機&#xff0c;安裝ubuntu系統&#xff08;不管是16、18、20、22&#xff09;后&#xff0c;鼠標都不流暢。最近幾天想解決這個問題&#xff0c;于是懷疑到了顯卡驅動上。懷疑之前一直用的是集成顯卡&#xff0c;而不是獨立顯卡&#xff0c;畢竟2060的顯卡…

oracle asm 相關命令和查詢視圖

有關asm磁盤的命令 添加磁盤 alter diskgroup data1 add disk /devices/diska*;---runs with a rebalance power of 5 , and dose not return until the rebalance operation is completealter diskgroup data1 add disk /devices/diskd* rebalance power 5 wait;查詢 select …

C++基于rapidjson的Json與結構體互相轉換

簡介 使用rapidjson庫進行封裝&#xff0c;實現了使用C對結構體數據和json字符串進行互相轉換的功能。最短只需要使用兩行代碼即可無痛完成結構體數據轉換為Json字符串。 支持std::string、數組、POD數據&#xff08;int,float,double等&#xff09;、std::vector、嵌套結構體…

Python爬蟲HTTP代理使用教程:突破反爬的實戰指南

目錄 一、代理原理&#xff1a;給爬蟲穿上"隱身衣" 二、代理類型選擇指南 三、代碼實戰&#xff1a;三行代碼實現代理設置 四、代理池管理&#xff1a;打造智能IP倉庫 代理驗證機制 動態切換策略 自動重試裝飾器 五、反反爬對抗技巧 請求頭偽裝 訪問頻率控…

STM32江科大----IIC

聲明&#xff1a;本人跟隨b站江科大學習&#xff0c;本文章是觀看完視頻后的一些個人總結和經驗分享&#xff0c;也同時為了方便日后的復習&#xff0c;如果有錯誤請各位大佬指出&#xff0c;如果對你有幫助可以點個贊小小鼓勵一下&#xff0c;本文章建議配合原視頻使用?? 如…

使用 React 和 Konva 實現一個在線畫板組件

文章目錄 一、前言二、Konva.js 介紹三、創建 React 畫板項目3.1 安裝依賴3.2 創建 CanvasBoard 組件 四、增加畫布控制功能4.1 清空畫布4.2 撤銷 & 重做功能 五、增加顏色和畫筆大小選擇5.1 選擇顏色5.2 選擇畫筆大小 六、最終效果七、總結 一、前言 在線畫板是許多應用&…

服務器配置虛擬IP

服務器配置虛擬IP的核心步驟取決于具體場景&#xff0c;主要包括本地單機多IP配置和高可用集群下的虛擬IP管理兩種模式。? 一、本地虛擬IP配置&#xff08;單服務器多IP&#xff09; ?基于Linux系統?&#xff1a; ?確認網絡接口?&#xff1a;使用 ip addr 或 ifconfig 查…

C++ —— 文件操作(流式操作)

C —— 文件操作&#xff08;流式操作&#xff09; ofstream文件創建文件寫入 ofstream 文件打開模式std::ios::out 寫入模式std::ios::app 追加模式std::ios::trunc 截斷std::ios::binary 二進制std::ios::ate at the end模式 ifstreamstd::ios::in 讀取模式&#xff08;默認&…

【Cursor】打開Vscode設置

在這里打開設置界面 打開設置json

智能指針和STL庫學習思維導圖和練習

思維導圖&#xff1a; #include <iostream> #include <vector> #include <string> using namespace std;// 用戶結構體 struct User {string username;string password; };vector<User> users; // 存儲所有注冊用戶// 使用迭代器查找用戶名是否存在 ve…

前端工具方法整理

文章目錄 1.在數組中找到匹配項&#xff0c;然后創建新對象2.對象轉JSON字符串3.JSON字符串轉JSON對象4.有個響應式對象&#xff0c;然后想清空所有屬性5.判斷參數不為空6.格式化字符串7.解析數組內容用逗號拼接8.刷新整個頁面 1.在數組中找到匹配項&#xff0c;然后創建新對象…

狀態空間建模與極點配置 —— 理論、案例與交互式 GUI 實現

目錄 狀態空間建模與極點配置 —— 理論、案例與交互式 GUI 實現一、引言二、狀態空間建模的基本理論2.1 狀態空間模型的優勢2.2 狀態空間模型的物理意義三、極點配置的理論與方法3.1 閉環系統的狀態反饋3.2 極點配置條件與方法3.3 設計流程四、狀態空間建模與極點配置的優缺點…