部署Kafka:KRaft模式

  • 文档创建者:Wendy123456
  • 历史版本:17
  • 最近更新:Nikozhan 于 2025-03-06
  • 1. 概述

    FineDataLink 支援使用 Kafka 作為資料同步的中間軟體,暫存來源資料庫中的資料,便於目標資料庫寫入資料,實現實時資料同步。

    本文介紹 Kafka KRaft 模式的部署方案,以便後續配置管道任務

    注:此範例為 Linux 系統下部署 Kafka;Kafka 建議安裝在 Linux 系統中(Kafka 也支援安裝在 Windows 中,但效能會受到限制,僅做示範使用,不建議用於生產環境 )。

    注:目前産品不支援 Kafka 叢集。

    2. KRaft 模式與 ZooKeeper 模式說明

    在 Kafka 2.8 之前,Kafka 重度依賴 ZooKeeper 叢集做元資料管理、Controller 的選舉等(統稱為共識服務);當 ZooKeeper 叢集效能發生抖動時,Kafka 的效能也會受到很大的影響。如下圖所示:

    注1:Kafka ZooKeeper 模式的部署方案請參見:部署Kafka:ZooKeeper模式

    注2:Kafka KRaft 模式、ZooKeeper 模式的詳細介紹可自行百度。

    1711442396732232.png

    在 Kafka 2.8 之後,引入了基於 Raft 協定的 KRaft 模式,支援取消對 ZooKeeper 的依賴。在 2022 年 10 月 Kafka 發佈 3.3.1 版本之後,將名為 KRaft 的新元資料管理方案標記為生產環境可用。

    在此模式下,一部分 Kafka Broker 被指定為 Controller ,另一部分則為 Broker 。這些 Controller 的作用就是以前由 ZooKeeper 提供的共識服務,並且所有的元資料都將儲存在 Kafka 主題中並在內部進行管理。

    1711442806500311.png

    KRaft 模式相比 ZooKeeper 模式的主要優勢如下:

    • 維運簡化:只需部署 Kafka,不再依賴 ZooKeeper。

    • 橫向擴展能力提升:Kafka 叢集能支援的 Partition 數量是衡量其橫向擴展能力的重要指標。此前這個值受 ZooKeeper 與 Controller 之間傳遞元資料的限制,只能到十萬量級,而 KRaft 模式不需要這種傳遞, 因此可以提升到百萬量級。

    • 元資料傳播提效:元資料透過 Kafka 的 Topic 管理,並利用 Topic 的生產消費傳播,整合性更好的同時也提升了一些底層實現的效能。

    3. 前提條件

    1)Kafka 運作需要 Java 環境,因此需要確定伺服器中已經指定了可使用的 Java 環境(指定 JAVA_HOME環境變數)。注1:jdk版本不能低於 1.8。

    注2:若 kafka 和 FineDataLink 部署在同一個伺服器上,可以使用同一個 JAVA 環境,操作步驟如下:

    在 etc/profile 檔案中配置 Java環境,增加如下內容:

    注:下面程式碼中%FineDataLink%更換為實際 FineDataLink 安裝路徑。

    export JAVA_HOME=%FineDataLink%/jdk/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar

    並執行source /etc/profile儲存,使修改立即生效。

    2)Kafka 效能可參考官方文檔: Apache Kafka

    4. 操作步驟

    4.1 下載安裝包

    點選下載安裝包:Kafka 安裝包

    注:Kafka KRaft 模式在生產環境使用限制:Kafka 3.3.1 之後的版本

    4.2 解壓安裝包

    1)上傳 kafka 安裝包。本文範例中,將安裝包上傳到/opt/kafka下。如下圖所示:

    21.png

    2)使用命令 tar zxvf kafka安裝包檔案名稱.tgz 解壓安裝包,例如如下圖所示:

    1711453671151178.png

    注:(請勿直接在windows環境下解壓後,進行檔案上傳,這樣會造成檔案被修改,常見報錯:/bin/bash^M: 壞的解譯器: 沒有那個檔案或目錄)

    4.3 修改 Kafka 儲存資料的目錄

    注:使用者也可忽略本節內容,使用預設資料儲存位置。

    Kafka 在使用時需要儲存資料到指定資料夾,因此需要建立資料夾用來存放暫存在 Kafka 中的資料。

    範例在 /data 目錄下建立:kafka-logs,如下圖所示:

    注:建議資料夾建立在伺服器中磁碟空間相對大的位置,資料夾位置可自行設定。

    1711454203993698.png

    開啟/opt/kafka/kafka_2.13-3.5.1/config/kraft目錄下的 server.properties 檔案(/opt/kafka/kafka_2.13-3.5.1為 kafka 安裝目錄),找到 log.dirs=,修改資料儲存位置,把等於號後邊的值更換為建立好的給 Kafka 儲存資料的目錄,修改之後儲存。如下圖所示:

    注:此處路徑為範例,使用者可根據實際情況設定儲存資料目錄位置。

    1711454387650393.png

    4.4 修改 listeners

    如果 kafka 和 FDL 不在同一個伺服器,則需要修改 server.properties 檔案的 listeners。詳情請參見:增加配置

     kafka 和 FDL 在同一個伺服器,忽略本節內容。

    注:Kafka 配置中無需指定 topic,FineDataLink 會自動建立,每張表對應一個topic。

    4.5 格式化 kafka 資料儲存目錄

    1)生成儲存目錄唯一ID

    進入 kafka 安裝目錄的 bin 目錄下,執行下面語句生成儲存目錄唯一ID。

    ./kafka-storage.sh  random-uuid

    1711454837947803.png

    2)格式化儲存目錄

    QRgd035ZQEqI9RPltqK7cg 為上一步生成的儲存目錄唯一ID;/opt/kafka/kafka_2.13-3.5.1 為 kafka 安裝目錄。使用者根據實際情況修改。

    ./kafka-storage.sh  format -t QRgd035ZQEqI9RPltqK7cg   -c  /opt/kafka/kafka_2.13-3.5.1/config/kraft/server.properties

    26.png

    4.6 啟動 kafka

    1)進入 Kafka 安裝目錄的 bin 目錄下,執行下面語句啟動 Kafka:

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

    1711455254457188.png

    2)使用ps -ef|grep kafka語句查看 Kafka 是否啟動成功。 

    28.png

    5. 後續步驟

    安裝部署好 Kafka 後,即可在 FinedataLink 中配置传输队列

    6. 維運命令

    /opt/kafka/kafka_2.13-3.5.1為 kafka 安裝目錄,使用者根據實際情況修改語句。

    1)可使用cat /opt/kafka/kafka_2.13-3.5.1/logs/server.log語句,查看 Kafka 服務日誌,服務日誌記錄了 Kafka 服務組件的啟動、關閉、狀態變化等資訊。

    2)可使用cat /opt/kafka/kafka_2.13-3.5.1/logs/controller.log語句,看 Kafka 控制器日誌,控制器日誌記錄了 Kafka 控制器的運作狀態和處理交易的資訊,如選舉新控制器、分配複本等。

    附件列表


    主题: 資料管道
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!