以下是在Ubuntu上合理配置Kafka的关键步骤和优化建议,涵盖环境准备、性能调优及安全保障:
安装Java环境
推荐使用OpenJDK 8或11,执行以下命令:
sudo apt update && sudo apt install openjdk-11-jdk
java -version # 验证安装
安装Zookeeper
zoo.cfg:wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar -xzf zookeeper-3.4.6.tar.gz
sudo mv zookeeper-3.4.6 /usr/local/zookeeper
sudo vi /usr/local/zookeeper/conf/zoo.cfg
关键参数:dataDir=/var/lib/zookeeper、clientPort=2181。sudo /usr/local/zookeeper/bin/zkServer.sh start
sudo netstat -nap | grep 2181 # 验证端口
安装Kafka
server.properties:wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -xzf kafka_2.12-3.5.2.tgz
sudo mv kafka_2.12-3.5.2 /usr/local/kafka
sudo vi /usr/local/kafka/config/server.properties
关键参数:
broker.id:唯一标识(集群中需唯一)。listeners:监听地址(如PLAINTEXT://0.0.0.0:9092)。log.dirs:日志存储路径(建议SSD,如/data/kafka/logs)。zookeeper.connect:Zookeeper地址(如localhost:2181)。sudo /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
sudo netstat -nap | grep 9092 # 验证端口
JVM调优
kafka-server-start.sh,设置堆内存(建议不超过物理内存50%):export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"
磁盘I/O优化
log.dirs为多目录(如/data1/kafka/logs,/data2/kafka/logs)。log.retention.hours=168 # 保留7天
log.segment.bytes=1GB # 单个日志段大小
网络与线程优化
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=1MB
socket.receive.buffer.bytes=1MB
分区与副本策略
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 8 --topic test
访问控制
server.properties中配置listeners=SSL://0.0.0.0:9092,并指定证书路径。kafka-acls.sh工具设置用户权限。监控与日志管理
log.retention.hours和log.cleanup.policy控制日志保留时间与清理策略。broker.id唯一,配置Zookeeper集群(zoo.cfg中添加多个server.X节点)。log.dirs目录权限正确(Kafka用户可读写)。参考来源:[1,2,3,4,5,6,7,8,9,10,11]