Kafka在CentOS上的配置最佳實踐
java-1.8.0-openjdk-devel),通過java -version驗證安裝是否成功。dataDir指向專用目錄,clientPort設為2181)。log.dirs,如/var/lib/kafka/logs)需設置為Kafka用戶(或運行用戶)所有,避免權限問題導致服務異常。broker.id:每個Broker的唯一整數標識(集群中不可重復),建議使用服務器IP后幾位(如192.168.1.10→10)。listeners:指定Broker監聽的協議及地址(如SASL_PLAINTEXT://0.0.0.0:9092),需包含所有網絡接口;advertised.listeners:客戶端連接的地址(如PLAINTEXT://your_public_ip:9092),確??蛻舳四苷_訪問。zookeeper.connect需填寫Zookeeper集群地址(如zk1:2181,zk2:2181,zk3:2181),建議添加chroot路徑(如/kafka)隔離Kafka數據。log.dirs:指定多個日志目錄(如/data/kafka1,/data/kafka2),提升磁盤IO并行能力;避免使用/tmp(系統重啟可能清空)。log.retention.ms:日志保留時間(如168h,即7天),根據業務需求調整;log.cleanup.policy:日志清理策略(delete刪除舊數據,compact壓縮相同key的消息,適合日志類場景)。default.replication.factor:主題默認副本數(建議≥2,生產環境設為3,確保數據冗余);min.insync.replicas:最小同步副本數(建議設為2,保證數據可靠性)。num.partitions:主題默認分區數(根據消費者并行需求設置,如消費者線程數為4,建議設為4或更大,提升并行處理能力)。vm.swappiness:設為1(禁用或極少使用swap,避免磁盤IO瓶頸);vm.dirty_background_ratio:設為10(后臺刷臟頁的閾值);vm.dirty_ratio:設為60(觸發強制刷臟頁的閾值)。vm.max_map_count:設為262144(增加內存映射區域數量,提升Kafka處理大量文件的能力)。noatime選項(避免記錄文件訪問時間,減少IO開銷)。net.core.rmem_default、net.core.wmem_default等參數(增大網絡緩沖區,提升吞吐量)。batch.size:批量發送消息的字節數(如1048576,即1MB),增大可提升吞吐量;linger.ms:發送延遲(如100ms),等待更多消息合并后發送。compression.type:消息壓縮類型(如lz4,兼顧壓縮率與速度),減少網絡傳輸和磁盤IO。fetch.min.bytes:每次拉取的最小字節數(如1048576,即1MB),減少拉取次數;fetch.max.wait.ms:拉取最大等待時間(如1000ms),平衡延遲與吞吐量。1/4~1/2(如8GB內存設為4g),避免過大導致GC停頓;使用G1垃圾回收器(-XX:+UseG1GC),提升GC效率。PLAIN機制),配置security.inter.broker.protocol=SASL_PLAINTEXT、sasl.enabled.mechanisms=PLAIN,并通過kafka_server_jaas.conf文件設置用戶名密碼。ssl.keystore.location、ssl.truststore.location),保護數據傳輸安全。firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="9092" protocol="tcp" accept')。kafka-topics.sh、kafka-consumer-groups.sh等命令定期檢查Topic狀態。log.retention.ms自動刪除舊數據),避免磁盤空間耗盡;使用logrotate工具歸檔日志。snapshot目錄)和Kafka日志目錄(log.dirs),制定恢復流程(如從備份中恢復log.dirs)。