【從零搭建生產級 Kafka 4.0 集群 \uD83D\uDEE0?:KRaft 模式部署與避坑指南】
文章圖片

Kafka 4.0 KRaft 模式的“秒級啟動” , 是不是很爽?但真正的考驗現在才開始!今天 , 咱們就來點硬核的:親手搭建一個三節點的、準生產級的 Kafka 4.0 KRaft 集群!準備好了嗎?系好安全帶 , 發車!
準備工作:三臺服務器在生產環境中 , 高可用是基本要求 。 我們將搭建一個包含 3 個節點的集群 , 這樣即使掛掉一臺 , 服務依然堅挺 。
- 服務器:3 臺 Linux 服務器(虛擬機或物理機都行)kafka-1 (IP: 192.168.1.11)kafka-2 (IP: 192.168.1.12)kafka-3 (IP: 192.168.1.13)
- 軟件:OpenJDK 11 或更高版本
- Kafka 版本:當然是最新的 4.0.0!
運維避坑指南 #1 : 確保三臺服務器之間網絡互通 , 并且防火墻開放了 Kafka 需要的端口(默認是 9092 和 9093) 。 網絡問題是集群搭建中最常見的“攔路虎”!第一步:下載并解壓 Kafka在 所有三臺服務器上 執行以下操作:
# 下載 Kafka 4.0.0wget https://downloads.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz# 解壓tar -xzf kafka_2.13-4.0.0.tgzcd kafka_2.13-4.0.0第二步:生成集群 IDKRaft 模式需要一個唯一的集群 ID 。 我們 只需要在一臺服務器上 生成它 , 然后所有節點共用 。# 生成一個唯一的集群 IDKAFKA_CLUSTER_ID=\"$(bin/kafka-storage.sh random-uuid)\"echo \"你的集群 ID 是: $KAFKA_CLUSTER_ID\"記下這個 ID , 比如 rQ8aQ9z1Tj-mN9yZ_wXb0w , 我們馬上會用到 。第三步:配置server.properties(核心中的核心!)
這是最關鍵的一步!我們需要為 每個節點 創建獨立的配置文件 。 進入 config/kraft/ 目錄 , 這里有官方的模板 。 我們以 kafka-1 為例進行修改:
# 進入配置目錄cd config/kraft/# 復制一份模板進行修改cp server.properties server-1.properties打開 server-1.properties , 修改以下核心配置:# 【關鍵】節點角色:我們讓每個節點都既是 broker 也是 controllerprocess.roles=brokercontroller# 【關鍵】節點 ID , 每個節點必須唯一!# kafka-1 設置為 1 kafka-2 設置為 2 以此類推node.id=1# 【關鍵】Controller 投票節點列表# 把所有 Controller 節點的 node.id 和 IP:端口 都列出來controller.quorum.voters=1@192.168.1.11:90932@192.168.1.12:90933@192.168.1.13:9093# 【關鍵】監聽器配置# broker 監聽來自客戶端的連接 , controller 監聽內部 Raft 協議的連接listeners=PLAINTEXT://:9092CONTROLLER://:9093# 【關鍵】廣播給客戶端的地址# 必須是客戶端能訪問到的地址!advertised.listeners=PLAINTEXT://192.168.1.11:9092# 日志存儲目錄 , 建議使用獨立的高性能磁盤log.dirs=/var/lib/kafka/data運維避坑指南 #2 : advertised.listeners 是新手的噩夢!如果你發現客戶端連接不上 , 99% 是這里配錯了 。 它必須是你的生產者/消費者能訪問到的 IP 或域名 。 如果是云服務器 , 這里通常要配置成公網 IP 。為 kafka-2 和 kafka-3 創建 server-2.properties 和 server-3.properties , 內容大部分相同 , 只需修改兩處:
- node.id 分別改為 2 和 3 。
- advertised.listeners 的 IP 分別改為 192.168.1.12 和 192.168.1.13 。
在 kafka-1 上執行:
bin/kafka-storage.sh format -t <你的集群ID> -c config/kraft/server-1.properties在 kafka-2 上執行:bin/kafka-storage.sh format -t <你的集群ID> -c config/kraft/server-2.properties在 kafka-3 上執行:bin/kafka-storage.sh format -t <你的集群ID> -c config/kraft/server-3.properties看到 Formatting ... 的日志就表示成功了 。第五步:啟動集群萬事俱備 , 只欠東風!在 所有三臺服務器上 啟動 Kafka 服務 。
在 kafka-1 上:
bin/kafka-server-start.sh -daemon config/kraft/server-1.properties在 kafka-2 上:bin/kafka-server-start.sh -daemon config/kraft/server-2.properties在 kafka-3 上:bin/kafka-server-start.sh -daemon config/kraft/server-3.properties-daemon 參數讓它在后臺運行 。第六步:驗證集群怎么知道我們的集群是不是成功了?創建一個 Topic 試試!
在 任意一臺 Kafka 服務器上執行:
# 創建一個名為 \"hello-kraft\" 的 Topic , 3個分區 , 3個副本bin/kafka-topics.sh --create \\--topic hello-kraft \\--bootstrap-server 192.168.1.11:9092 \\--partitions 3 \\--replication-factor 3# 查看 Topic 詳情bin/kafka-topics.sh --describe \\--topic hello-kraft \\--bootstrap-server 192.168.1.11:9092如果你能看到 Topic 的分區信息 , 并且 Leader 和 Replicas 分布在不同的節點上 , 那么恭喜你! 你的第一個生產級 Kafka 4.0 KRaft 集群已經成功上線!推薦閱讀
- 聚焦新質生產力系列之六:從算力到存力,解鎖數據要素新價值
- 16GB+1TB從4999降到2999元,價格“雪崩”的小屏旗艦,可以撿漏了
- 從核心到邊緣,Solidigm SSD助力破解AI存儲難題
- 從選片、購票到取票,想看《F1狂飆賽車》,一部鴻蒙5手機就夠了
- 一加“亂套了”,從3499元跌至2082元,16GB運存旗艦售價更加親民
- 榮耀X50,零利潤清倉退場,非常值得撿漏!
- 小屏旗艦手機價格“雪崩”,從4299元跌至2464元, 太刺激了
- 國補下半場激戰來襲,智能投影如何從 “浪潮” 里撈走更多真金?
- 從游戲本卷王到輕薄本新銳:潘春節解讀星耀14背后的戰略轉向
- 高價從OpenAI和蘋果挖AI人才的Meta 現金儲備還超過550億美元
