Ubuntu下Kafka配置最佳實踐
sudo apt update && sudo apt install -y openjdk-8-jdk,驗證版本:java -version。dataDir(數據存儲路徑,如/var/lib/zookeeper)、clientPort(客戶端連接端口,默認2181),并設置myid文件(每臺節點唯一ID)。broker.id:每臺Broker的唯一標識(集群中不可重復,建議用IP后幾位,如192.168.1.100→100);listeners:Broker監聽地址(如PLAINTEXT://0.0.0.0:9092,允許所有IP連接;生產環境建議限制內網IP);advertised.listeners:對外暴露的地址(如PLAINTEXT://your_public_ip:9092,客戶端通過此地址連接Broker);log.dirs:消息日志存儲路徑(建議用多個磁盤路徑,如/data/kafka1,/data/kafka2,提升IO并行能力);zookeeper.connect:ZooKeeper集群地址(如localhost:2181或zk1:2181,zk2:2181,zk3:2181);delete.topic.enable:是否允許刪除Topic(生產環境建議設為true,避免誤操作導致Topic堆積)。kafka-server-start.sh中的KAFKA_HEAP_OPTS,建議分配物理內存的60%-70%(如16GB內存設為-Xms12G -Xmx12G),并啟用G1垃圾回收器(-XX:+UseG1GC),優化GC性能。buffer.memory:生產者緩沖區大?。J32MB),建議設為可用內存的50%-70%(如32GB內存設為16GB-21GB),提升批量發送效率;num.io.threads:IO線程數(默認8),建議設為CPU核心數的2-3倍(如8核設為16-24),處理磁盤IO操作。noatime,nodiratime,data=writeback選項(減少文件訪問時間更新,提升寫入性能)。--partitions 8),分散寫入壓力到多個磁盤;log.retention.hours,默認168小時/7天),根據業務需求調整(如30天)。ufw限制Kafka端口(9092、2181)訪問,僅允許可信IP:sudo ufw allow from <trusted_ip> to any port 9092/tcp,sudo ufw enable。keystore.jks和truststore.jks),修改server.properties中的listeners為SSL://your_server_ip:9093,并設置ssl.keystore.location、ssl.truststore.location等參數。server.properties中的security.inter.broker.protocol=SASL_SSL、sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256),并配置用戶密碼(通過kafka-configs.sh命令創建用戶)。kafka_server_BrokerTopicMetrics_MessagesInPerSec、kafka_server_BrokerTopicMetrics_BytesInPerSec等指標),或使用Kafka自帶的kafka-topics.sh、kafka-consumer-groups.sh命令查看Topic狀態、消費者組偏移量。logs/server.log)和ZooKeeper(logs/zookeeper.out)日志,分析ERROR或WARN信息(如磁盤空間不足、網絡連接問題);設置日志輪轉(log4j.properties中配置log4j.appender.ROLLINGFILE.MaxFileSize=100MB),避免日志文件過大。log.dirs)和ZooKeeper數據目錄(dataDir),可使用rsync或tar命令;制定災難恢復計劃(如Broker宕機時,通過備份數據恢復)。