Kafka在Debian上的最佳實踐指南
sudo apt update && sudo apt upgrade -y確保系統包最新;通過sysctl調整內核參數(如net.core.somaxconn設為32768、vm.swappiness設為10)以提升網絡和內存性能。sudo apt install openjdk-11-jdk -y安裝,驗證java -version顯示正確版本。zoo.cfg(dataDir=/var/lib/zookeeper、clientPort=2181、集群節點server.x=host:2888:3888),啟動zkServer.sh。config/kraft/server.properties(node.id=1、controller.quorum.voters=1@host:9093),無需單獨部署ZooKeeper。/opt/kafka(避免空格和特殊字符),設置KAFKA_HOME環境變量(/opt/kafka)并添加至PATH。broker.id需唯一(如0、1、2);listeners=PLAINTEXT://:9092(監聽所有接口),advertised.listeners=PLAINTEXT://your.server.ip:9092(對外暴露地址);log.dirs=/data/kafka/logs(多目錄提升IO)、zookeeper.connect=localhost:2181(傳統模式)或controller.quorum.voters(Kraft模式)、default.replication.factor=3(副本數≥3)、min.insync.replicas=2(確保數據可靠性)。broker.id(唯一)、listeners(本地IP)、advertised.listeners(公網/內網IP)、log.dirs(本地數據目錄)。/etc/systemd/system/kafka.service),內容如下:[Unit]
Description=Kafka Server
After=network.target zookeeper.service # 傳統模式依賴ZooKeeper
# After=network.target # Kraft模式無需ZooKeeper
[Service]
Type=simple
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
User=kafka
Group=kafka
[Install]
WantedBy=multi-user.target
執行sudo systemctl daemon-reload && sudo systemctl enable kafka --now啟用自啟。num.network.threads=CPU核心數×2/3(處理網絡請求)、num.io.threads=CPU核心數×50%(磁盤IO)、num.replica.fetchers=CPU核心數/3(副本同步);num.partitions=消費者線程數(充分利用多核)、compression.type=lz4(平衡吞吐量與CPU開銷);buffer.memory=64MB(生產者緩沖區)、acks=all(生產者確認機制)、log.retention.hours=168(日志保留7天)。batch.size=1MB(批量發送)、linger.ms=100ms(等待批量)、compression.type=lz4;fetch.min.bytes=1MB(批量拉?。?、fetch.max.wait.ms=1000ms(平衡延遲)、max.poll.records=500(單次拉取量)。kafka-topics.sh --describe查看Topic配置、kafka-consumer-groups.sh --describe查看消費組狀態)定期巡檢。log4j.properties中設置log.retention.hours),定期清理舊日志(如保留7天);將日志發送至ELK(Elasticsearch+Logstash+Kibana)集中管理。systemctl status kafka);/opt/kafka/logs/server.log)定位異常;telnet broker-ip 9092)。ssl.keystore.location、ssl.truststore.location);sasl.mechanism=SCRAM-SHA-256、listener.name.plaintext.scram-sha-256.sasl.jaas.config);kafka-acls.sh --add --allow-principal User:user1 --operation Read --topic test-topic)限制資源訪問。kafka-backup工具或自定義腳本定期備份log.dirs中的數據,存儲至異地(如S3、NFS)。