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)。