一、准备工作
kafka3.8.0的安装包 kafka_2.13-3.8.0.tgz,点击下载
#解压到/usr/local/kafka_2.13-3.8.0目录下
tar -zxvf kafka_2.13-3.8.0.tgz -C /usr/local
#简化目录结构,后续操作目录改为 /usr/local/kafka(若不改名,后续所有路径需用/usr/local/kafka_2.13-3.8.0)
mv kafka_2.13-3.8.0 kafka
说明:必须依赖于JDK1.8
二、前置配置
- 生成集群ID(必须)
bash
./bin/kafka-storage.sh random-uuid
- 编辑配置文件server.properties
bash
node.id=1
process.roles=broker,controller
controller.listener.names=CONTROLLER
controller.quorum.voters=1@192.168.11.12:9092
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
advertised.listeners=PLAINTEXT://192.168.11.12:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
inter.broker.listener.name=PLAINTEXT
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
#数据目录,可以自定义为其他目录
log.dirs=/usr/local/kafka/kraft-logs
num.partitions=1
default.replication.factor=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
auto.create.topics.enable=true
group.initial.rebalance.delay.ms=0
- 设置格式化存储(必须)
bash
./bin/kafka-storage.sh format -t 你的集群ID -c ./config/server.properties
三、启动测试
bash
nohup ./bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &
四、优化
-
创建启动脚本
#!/bin/bash
Kafka 启动脚本
切换到 Kafka 安装目录(若未简化目录,替换为/usr/local/kafka_2.13-3.8.0)
cd /usr/local/kafka
后台启动 Kafka,日志输出到/dev/null,避免占用磁盘空间
nohup ./bin/kafka-server-start.sh config/kraft/server.properties > /dev/null 2>&1 &
等待3秒,确保进程启动完成
sleep 3
查看 Kafka 进程,验证启动结果
kafka_pid=(ps -ef | grep kafka | grep -v grep | awk '{print 2}')
if [ -n "kafka_pid" ]; then echo "Kafka 后台启动成功!进程ID:kafka_pid,关闭终端不影响运行。"
else
echo "Kafka 启动失败,请检查配置文件、格式化步骤或脚本路径是否正确。"
fi -
创建停止脚本
#!/bin/bash
Kafka 停止脚本
切换到 Kafka 安装目录(若未简化目录,替换为/usr/local/kafka_2.13-3.8.0)
cd /usr/local/kafka
执行 Kafka 自带停止命令,优先正常停止
./bin/kafka-server-stop.sh
等待3秒,确保进程停止
sleep 3
检查是否还有剩余 Kafka 进程
kafka_pid=(ps -ef | grep kafka | grep -v grep | awk '{print 2}')
if [ -z "kafka_pid" ]; then echo "Kafka 已成功停止!" else echo "Kafka 正常停止失败,正在强制停止剩余进程(进程ID:kafka_pid)..."
# 强制杀死剩余 Kafka 进程,仅应急使用
kill -9 $kafka_pid
echo "Kafka 强制停止成功!"
fi -
给脚本授权
给启动脚本添加执行权限
chmod +x start-kafka.sh
给停止脚本添加执行权限
chmod +x stop-kafka.sh
#使用方式
启动 Kafka(在 Kafka 安装根目录执行)
./start-kafka.sh
停止 Kafka(在 Kafka 安装根目录执行)
./stop-kafka.sh
-
设置开机自启
1. 创建 Kafka 系统服务文件(CentOS 7.5 服务文件路径固定)
vi /etc/systemd/system/kafka.service
2. 粘贴以下内容(适配 CentOS 7.5,确保 Kafka 路径与实际安装路径一致,本文路径 /usr/local/kafka)
[Unit]
Description=Apache Kafka Server (CentOS 7.5)
After=network.target network-online.target # 适配 CentOS 7.5,确保网络完全启动后再启动 Kafka
Wants=network-online.target[Service]
Type=forking
User=root # CentOS 7.5 推荐使用 root 用户执行,避免权限不足
Group=root
ExecStart=/usr/local/kafka/start-kafka.sh # 启动脚本路径,需与实际一致
ExecStop=/usr/local/kafka/stop-kafka.sh # 停止脚本路径,需与实际一致
Restart=on-failure # 故障自动重启
RestartSec=5 # 故障后延迟5秒重启,适配 CentOS 7.5 系统特性
TimeoutSec=30 # 超时时间,避免启动/停止卡住[Install]
WantedBy=multi-user.target # CentOS 7.5 多用户模式下生效3. 重新加载 systemd 配置(CentOS 7.5 必须执行,使服务文件生效)
systemctl daemon-reload
4. 启用开机自启(CentOS 7.5 启用命令,重启系统后自动生效)
systemctl enable kafka
5. 查看开机自启状态(CentOS 7.5 查看命令,显示 enabled 即为成功)
systemctl is-enabled kafka
6. 手动启动/停止/查看 Kafka 服务(替代脚本,适配 CentOS 7.5)
systemctl start kafka # 启动
systemctl stop kafka # 停止
systemctl status kafka # 查看运行状态(CentOS 7.5 可直观看到服务是否正常)补充:CentOS 7.5 额外排查命令(若开机自启失败)
查看 Kafka 服务日志,排查失败原因
journalctl -u kafka -f
检查脚本执行权限(若提示权限不足)
chmod +x /usr/local/kafka/start-kafka.sh
chmod +x /usr/local/kafka/stop-kafka.sh
完美,打完收工~