文章目錄
- openEuler2403安裝部署Kafka with KRaft
- 一、前言
- 1.簡介
- 2.架構
- 3.環境
- 二、正文
- 1.部署服務器
- 2.基礎環境
- 1)JDK 安裝部署
- 2)關閉防火墻
- 3.單機部署
- 1)下載軟件包
- 2)修改配置文件
- 3)格式化存儲目錄
- 4)單機啟動
- 5)測試
- 6)systemd服務管理
- 4.集群部署
- 1)下載軟件包
- 2)修改配置文件
- 3)拷貝Kafka
- 4)修改配置文件
- 5)格式化存儲目錄
- 6)集群啟動
- 7)測試
- 8)systemd服務管理
- 5.Kafka監控管理
- 1)Kafka啟動JMX
- 2)安裝Kafbat UI
- 三、其它
- 1.常用命令
openEuler2403安裝部署Kafka with KRaft
一、前言
1.簡介
Apache Kafka 是一個開源分布式事件流平臺,已被數千家公司用于高性能數據管道、流分析、數據集成和關鍵任務應用程序。
KRaft(Kafka Raft)模式是從 Apache Kafka 2.8.0 版本開始引入,KRaft 旨在摒棄對 ZooKeeper 的依賴。在以前的版本中,Apache Kafka 依賴于 ZooKeeper 來管理集群元數據和協調集群,但這增加了系統的復雜性和運維負擔。KRaft 模式通過引入 Raft 協議直接在 Kafka 內部處理這些功能,從而簡化了 Kafka 的架構和部署過程。
2.架構
ARCHITECTURE - Apache Kafka
3.環境
- Linux 發行版: openEuler-24.03-LTS-SP2-x86_64-dvd.iso
- JDK 版本:Alibaba Dragonwell Extended Edition-11.0.27.24+6-GA
- Kafka 版本:3.9.1
Kafka 官網:https://kafka.apache.org/
intro - Apache Kafka:https://kafka.apache.org/intro
Kafka QuickStart:https://kafka.apache.org/documentation/#quickstart
Kafbat UI 用戶手冊:https://ui.docs.kafbat.io/
openEuler2403安裝部署Kafbat:https://blog.csdn.net/u011424614/article/details/151195306
openEuler常用操作指令:https://blog.csdn.net/u011424614/article/details/150942929
openEuler中LVM調整實現home與root分區空間平衡:https://blog.csdn.net/u011424614/article/details/150961763
openEuler安裝部署JDK11:https://blog.csdn.net/u011424614/article/details/150961633
openEuler2403安裝部署MySQL8:https://blog.csdn.net/u011424614/article/details/150966094
VirtualBox安裝openEuler24.03:https://blog.csdn.net/u011424614/article/details/150725588
VMware安裝openEuler24.03:https://blog.csdn.net/u011424614/article/details/150723134
二、正文
1.部署服務器
- Kafka 默認端口
端口 | 描述 |
---|---|
9092 | Kafka Clients |
9093 | Kafka Control Plane |
8083 | Kafka Connect |
8081 | Schema Registry |
8082 | REST Proxy |
8088 | ksqlDB |
- 服務器
- 單機部署使用:192.168.249.121
- 集群部署使用:192.168.249.121、192.168.249.122、192.168.249.123
IP | 節點部署 |
---|---|
192.168.249.121 | Kafka 節點 |
192.168.249.122 | Kafka 節點 |
192.168.249.123 | Kafka 節點 |
192.168.249.124 | Know Streaming 管控平臺 【CentOS7】 |
2.基礎環境
1)JDK 安裝部署
集群部署:需要在 3 臺 Kafka 服務器上安裝JDK
- 安裝參考:《openEuler安裝部署JDK11》
- JDK 版本:Alibaba Dragonwell Extended Edition-11.0.27.24+6-GA
- 安裝目錄:
/opt/java/dragonwell-11.0.27.24+6-GA
2)關閉防火墻
集群部署:在 4 臺服務器上執行
- 可禁用防火墻,或配置開放的端口,后者比較安全
# 關閉防火墻
systemctl stop firewalld.service
# 開機禁用防火墻
systemctl disable firewalld.service
# 防火墻狀態
systemctl status firewalld.service
3.單機部署
在 121 服務器上執行
1)下載軟件包
- 創建安裝目錄,并下載
mkdir /opt/kafka && cd /opt/kafka# 下載軟件包,如果 wget 無法下載,可使用瀏覽器或迅雷下載
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz --no-check-certificate
# 解壓
tar -xzf kafka_2.13-3.9.1.tgz# 進入安裝目錄
cd /opt/kafka/kafka_2.13-3.9.1
2)修改配置文件
- 編輯 server.properties 配置文件
vim config/kraft/server.properties
內容(修改以下配置,其它不變)
# Kafka broker對外公布的監聽地址和端口
advertised.listeners=PLAINTEXT://192.168.249.121:9092,CONTROLLER://192.168.249.121:9093# Kafka存儲日志數據的目錄路徑
log.dirs=/data/kraft-combined-logs
3)格式化存儲目錄
- 生成UUID
# 生成 UUID
bin/kafka-storage.sh random-uuid
# 輸出內容:
FHWoeUzDRWymafTzEl0rEw
- 格式化存儲目錄
- 注意:1.替換生成的 UUID;2.文件路徑:config/kraft/server.properties
bin/kafka-storage.sh format -t FHWoeUzDRWymafTzEl0rEw -c config/kraft/server.properties
4)單機啟動
- 啟動
cd /opt/kafka/kafka_2.13-3.9.1
# 啟動
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
- 查看運行情況
jps
5)測試
- 進入安裝目錄
cd /opt/kafka/kafka_2.13-3.9.1
- 創建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.249.121:9092
- 寫入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.249.121:9092# 寫入內容
first event
second event
- 讀取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.249.121:9092
6)systemd服務管理
- 創建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target[Service]
Environment="JAVA_HOME=/opt/java/dragonwell-11.0.27.24+6-GA"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.9.1/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF
- 啟動服務,并設置開機自啟動
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
- 查詢進程狀態
systemctl status kafka-server.service
4.集群部署
1)下載軟件包
在 121 服務器上執行
- 創建安裝目錄,并下載
mkdir /opt/kafka && cd /opt/kafka# 下載軟件包,如果 wget 無法下載,可使用瀏覽器或迅雷下載
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz --no-check-certificate
# 解壓
tar -xzf kafka_2.13-3.9.1.tgz# 進入安裝目錄
cd /opt/kafka/kafka_2.13-3.9.1
2)修改配置文件
在 121 服務器上執行
- 編輯 server.properties 配置文件
vim config/kraft/server.properties
- 內容(修改以下配置,其它不變)
# 節點ID,集群節點唯一
node.id=1# 標識哪些節點是Quorum的投票者節點
controller.quorum.voters=1@192.168.249.121:9093,2@192.168.249.122:9093,3@192.168.249.123:9093# Kafka broker對外公布的監聽地址和端口
advertised.listeners=PLAINTEXT://192.168.249.121:9092,CONTROLLER://192.168.249.121:9093# Kafka存儲日志數據的目錄路徑
log.dirs=/data/kraft-combined-logs
3)拷貝Kafka
在 122、123 服務器上執行
- 122 和 123 服務器創建目錄
mkdir /opt/kafka
在 121 服務器上執行
- 拷貝 Kafka 到其它服務器
scp -r /opt/kafka/kafka_2.13-3.9.1 root@192.168.249.122:/opt/kafka
scp -r /opt/kafka/kafka_2.13-3.9.1 root@192.168.249.123:/opt/kafka
4)修改配置文件
在 122 服務器上執行
- 編輯 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.9.1vim config/kraft/server.properties
- 內容(修改以下配置,其它不變;注意這里是 121 服務器拷貝,所以省了2個參數)
# 節點ID,集群節點唯一
node.id=2# Kafka broker對外公布的監聽地址和端口
advertised.listeners=PLAINTEXT://192.168.249.122:9092,CONTROLLER://192.168.249.122:9093
在 123 服務器上執行
- 編輯 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.9.1vim config/kraft/server.properties
- 內容(修改以下配置,其它不變;注意這里是 121 服務器拷貝,所以省了2個參數)
# 節點ID,集群節點唯一
node.id=3# Kafka broker對外公布的監聽地址和端口
advertised.listeners=PLAINTEXT://192.168.249.123:9092,CONTROLLER://192.168.249.123:9093
5)格式化存儲目錄
在 121 服務器上執行
- 生成UUID
cd /opt/kafka/kafka_2.13-3.9.1# 生成 UUID
bin/kafka-storage.sh random-uuid
# 輸出內容:
OukPqtmXSAO2aYUs9kFFbg
在 121、122、123 服務器上執行
- 格式化存儲目錄,使用生成的 UUID
bin/kafka-storage.sh format -t OukPqtmXSAO2aYUs9kFFbg -c config/kraft/server.properties
6)集群啟動
在 121、122、123 服務器上執行
- 啟動
cd /opt/kafka/kafka_2.13-3.9.1
# 啟動
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
- 查看運行情況
jps
7)測試
在 121 服務器上執行
- 進入安裝目錄
cd /opt/kafka/kafka_2.13-3.9.1
- 創建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.249.121:9092
- 寫入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.249.121:9092# 寫入內容
first event
second event
- 讀取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.249.121:9092
8)systemd服務管理
在 121、122、123 服務器上執行
- 創建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target[Service]
Environment="JAVA_HOME=/opt/java/dragonwell-11.0.27.24+6-GA"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.9.1/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF
- 啟動服務,并設置開機自啟動
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
- 查詢進程狀態
systemctl status kafka-server.service
5.Kafka監控管理
在 124 服務器上執行
1)Kafka啟動JMX
在 121、122、123 服務器上執行
- 編輯
kafka-server-start.sh
啟動腳本
cd /opt/kafka/kafka_2.13-3.9.1/vim bin/kafka-server-start.sh
編輯內容:除注釋外第一行,加入 JMX 端口和指定服務器 IP;
注意:替換不同服務器的 IP
export JMX_PORT=9999KAFKA_OPTS="-Dcom.sun.management.jmxremote \-Dcom.sun.management.jmxremote.authenticate=false \-Dcom.sun.management.jmxremote.ssl=false \-Djava.rmi.server.hostname=192.168.249.121"
export KAFKA_OPTS
- 重啟 Kafka(選擇其中一種重啟方式)
# systemctl 重啟
systemctl stop kafka-server.service
systemctl start kafka-server.service
systemctl status kafka-server.service# 備用,非必要執行,腳本重啟
cd /opt/kafka/kafka_2.13-3.9.1/
bin/kafka-server-stop.sh
bin/kafka-server-start.sh -daemon config/kraft/server.properties
- 檢測 JMX 端口
netstat -tunlp |grep 9999
2)安裝Kafbat UI
Kafbat UI 是一款多功能、高效、輕量級且靈活的 Web 界面工具,專為監控和管理 Apache Kafka? 集群而設計。它由開發者打造、為開發者服務,提供直觀的操作體驗,幫助用戶:實時洞察數據流、快速定位并解決問題、保障集群持續高性能運行。
- 具體操作參考:《openEuler2403安裝部署Kafbat》
三、其它
1.常用命令
命令 | 說明 |
---|---|
systemctl daemon-reload | 重新加載服務配置 |
systemctl start kafka-server.service | 啟動服務 |
systemctl enable kafka-server.service | 開機自啟動服務 |
systemctl status kafka-server.service | 查詢服務狀態 |
systemctl stop kafka-server.service | 停止服務 |
systemctl restart kafka-server.service | 重啟服務 |
systemctl disable kafka-server.service | 禁用開機自啟動服務 |