一、前置環境準備
在Debian上穩定運行Kafka,需先安裝Java(JDK 11及以上)(Kafka依賴Java運行環境)和Zookeeper(Kafka協調服務,建議集群部署)。Java安裝可通過sudo apt update && sudo apt install openjdk-11-jdk
完成,驗證java -version
確認安裝成功;Zookeeper可通過sudo apt install zookeeperd
安裝,啟動后檢查狀態sudo systemctl status zookeeper
。
二、Kafka安裝與配置
/opt/kafka
目錄(便于管理):wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz && tar -xzf kafka_2.13-3.6.1.tgz -C /opt/ && mv /opt/kafka_2.13-3.6.1 /opt/kafka
。/etc/profile
,添加Kafka路徑:export KAFKA_HOME=/opt/kafka && export PATH=$PATH:$KAFKA_HOME/bin
,執行source /etc/profile
使變量生效。/opt/kafka/config/server.properties
,關鍵參數如下:
broker.id
:集群中唯一標識(如0、1、2);listeners
:監聽地址(如PLAINTEXT://your_server_ip:9092
,避免localhost
導致無法遠程訪問);log.dirs
:日志存儲目錄(如/data/kafka/logs
,需提前創建并授權);zookeeper.connect
:Zookeeper集群地址(如zk1:2181,zk2:2181,zk3:2181
);default.replication.factor
:副本因子(生產環境建議≥3,確保數據冗余);min.insync.replicas
:最小同步副本數(建議≥2,配合acks=all
保證數據可靠性)。三、啟動與開機自啟
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
),再啟動Kafka(/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
)。systemd
創建服務文件,實現自動啟動:
/etc/systemd/system/kafka.service
,內容如下:[Unit]
Description=Apache Kafka
After=network.target zookeeper.service
[Service]
User=kafka
Group=kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
/etc/systemd/system/zookeeper.service
(類似結構),替換為Zookeeper啟動命令。sudo systemctl daemon-reload && sudo systemctl enable kafka zookeeper && sudo systemctl start kafka zookeeper
,設置開機自啟并立即啟動。四、權限與安全設置
kafka
(sudo groupadd kafka && sudo useradd -g kafka kafka
),并將Kafka相關目錄(/opt/kafka
、/data/kafka/logs
、/var/log/kafka
)的所有權賦予該用戶:sudo chown -R kafka:kafka /opt/kafka /data/kafka/logs /var/log/kafka
,權限設置為750
(sudo chmod -R 750 /opt/kafka /data/kafka/logs /var/log/kafka
),避免未授權訪問。security.inter.broker.protocol=SASL_SSL
、ssl.keystore.location
等參數。五、性能調優
num.io.threads
(I/O線程,建議為CPU核心數的50%,如8核則設為4)、num.network.threads
(網絡線程,建議為CPU核心數的2/3,如8核則設為5)、num.replica.fetchers
(副本拉取線程,建議為CPU核心數的1/3,如8核則設為2);compression.type=lz4
(平衡吞吐量與CPU開銷,比gzip更高效);buffer.memory=64MB
(生產者緩沖區,避免消息丟失)、acks=all
(生產者等待所有副本確認,確保數據不丟失)、min.insync.replicas=2
(最小同步副本數,配合acks=all
使用)。六、監控與維護
kafka-topics.sh --list --bootstrap-server localhost:9092
;kafka-topics.sh --describe --topic your_topic --bootstrap-server localhost:9092
;kafka-topics.sh --create --topic your_topic --partitions 3 --replication-factor 3 --bootstrap-server localhost:9092
;kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group your_group
。