以下是在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]