Kafka依赖Java 1.8及以上版本,使用OpenJDK安装:
sudo yum install java-1.8.0-openjdk-devel -y
# 验证安装
java -version
Kafka通过Zookeeper实现集群管理和Leader选举,需先部署Zookeeper:
# 下载并解压Zookeeper(以3.8.1为例)
wget https://downloads.apache.org/zookeeper/zookeeper-3.8.1/apache-zookeeper-3.8.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.8.1-bin.tar.gz
mv apache-zookeeper-3.8.1-bin /opt/zookeeper
# 配置Zookeeper数据目录
mkdir -p /data/zookeeper/{data,logs}
# 修改配置文件(/opt/zookeeper/conf/zoo.cfg)
dataDir=/data/zookeeper/data
clientPort=2181
# 启动Zookeeper
/opt/zookeeper/bin/zkServer.sh start
从Apache官网下载稳定版本(如3.5.2),解压至指定目录:
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
tar -zxvf kafka_2.12-3.5.2.tgz
mv kafka_2.12-3.5.2 /opt/kafka
编辑/opt/kafka/config/server.properties,调整以下关键参数:
broker.id=0(集群中每个broker需唯一)listeners=PLAINTEXT://your_server_ip:9092  # 绑定服务器IP
advertised.listeners=PLAINTEXT://your_server_ip:9092  # 客户端可见地址
log.dirs=/data/kafka/logs(需提前创建目录并授权)zookeeper.connect=localhost:2181(集群则用逗号分隔多个节点)default.replication.factor=3  # 默认副本数(需>=2)
min.insync.replicas=2         # 写操作需确认的最小副本数
auto.create.topics.enable=false  # 禁止自动创建Topic(避免误操作)
# 启动Kafka(后台模式)
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
# 启动Zookeeper(若未配置开机自启)
/opt/zookeeper/bin/zkServer.sh start
/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server your_server_ip:9092 --partitions 3 --replication-factor 3
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server your_server_ip:9092
# 生产者
/opt/kafka/bin/kafka-console-producer.sh --topic test --bootstrap-server your_server_ip:9092
# 消费者(从开头读取)
/opt/kafka/bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server your_server_ip:9092
创建systemd服务文件/etc/systemd/system/kafka.service:
[Unit]
Description=Apache Kafka Server
After=network.target zookeeper.target
[Service]
Type=simple
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
RestartSec=5
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable kafka
sudo systemctl start kafka
log.retention.hours=168(7天),避免磁盘爆满。log.segment.bytes=1073741824(1GB),减少文件数量提升IO效率。num.io.threads=8(根据CPU核心数调整,建议2*核心数+1)。server.properties中添加:security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
listeners=SSL://your_server_ip:9093,并设置证书路径。firewall-cmd --add-port=9092/tcp --permanent开放端口。log.dirs目录属主为kafka用户:chown -R kafka:kafka /data/kafka/logs。zookeeper.connect地址是否正确,Zookeeper服务是否运行。