一、前置环境准备
在Debian上稳定运行Kafka,需先安装Java(JDK 11及以上)(Kafka依赖Java运行环境)和Zookeeper(Kafka协调服务,建议集群部署)。Java安装可通过sudo apt update && sudo apt install openjdk-11-jdk完成,验证java -version确认安装成功;Zookeeper可通过sudo apt install zookeeperd安装,启动后检查状态sudo systemctl status zookeeper。
二、Kafka安装与配置
/opt/kafka目录(便于管理):wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz && tar -xzf kafka_2.13-3.6.1.tgz -C /opt/ && mv /opt/kafka_2.13-3.6.1 /opt/kafka。/etc/profile,添加Kafka路径:export KAFKA_HOME=/opt/kafka && export PATH=$PATH:$KAFKA_HOME/bin,执行source /etc/profile使变量生效。/opt/kafka/config/server.properties,关键参数如下: broker.id:集群中唯一标识(如0、1、2);listeners:监听地址(如PLAINTEXT://your_server_ip:9092,避免localhost导致无法远程访问);log.dirs:日志存储目录(如/data/kafka/logs,需提前创建并授权);zookeeper.connect:Zookeeper集群地址(如zk1:2181,zk2:2181,zk3:2181);default.replication.factor:副本因子(生产环境建议≥3,确保数据冗余);min.insync.replicas:最小同步副本数(建议≥2,配合acks=all保证数据可靠性)。三、启动与开机自启
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties),再启动Kafka(/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties)。systemd创建服务文件,实现自动启动: /etc/systemd/system/kafka.service,内容如下:[Unit] Description=Apache Kafka After=network.target zookeeper.service [Service] User=kafka Group=kafka ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh Restart=on-failure [Install] WantedBy=multi-user.target /etc/systemd/system/zookeeper.service(类似结构),替换为Zookeeper启动命令。sudo systemctl daemon-reload && sudo systemctl enable kafka zookeeper && sudo systemctl start kafka zookeeper,设置开机自启并立即启动。四、权限与安全设置
kafka(sudo groupadd kafka && sudo useradd -g kafka kafka),并将Kafka相关目录(/opt/kafka、/data/kafka/logs、/var/log/kafka)的所有权赋予该用户:sudo chown -R kafka:kafka /opt/kafka /data/kafka/logs /var/log/kafka,权限设置为750(sudo chmod -R 750 /opt/kafka /data/kafka/logs /var/log/kafka),避免未授权访问。security.inter.broker.protocol=SASL_SSL、ssl.keystore.location等参数。五、性能调优
num.io.threads(I/O线程,建议为CPU核心数的50%,如8核则设为4)、num.network.threads(网络线程,建议为CPU核心数的2/3,如8核则设为5)、num.replica.fetchers(副本拉取线程,建议为CPU核心数的1/3,如8核则设为2);compression.type=lz4(平衡吞吐量与CPU开销,比gzip更高效);buffer.memory=64MB(生产者缓冲区,避免消息丢失)、acks=all(生产者等待所有副本确认,确保数据不丢失)、min.insync.replicas=2(最小同步副本数,配合acks=all使用)。六、监控与维护
kafka-topics.sh --list --bootstrap-server localhost:9092;kafka-topics.sh --describe --topic your_topic --bootstrap-server localhost:9092;kafka-topics.sh --create --topic your_topic --partitions 3 --replication-factor 3 --bootstrap-server localhost:9092;kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group your_group。