一、准备工作

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

二、前置配置

1. 生成集群ID(必须)

./bin/kafka-storage.sh random-uuid

2. 编辑配置文件server.properties

node.id=1
process.roles=broker,controller
controller.listener.names=CONTROLLER
controller.quorum.voters=1@localhost:9096

listeners=PLAINTEXT://0.0.0.0:9095,CONTROLLER://0.0.0.0:9096
advertised.listeners=PLAINTEXT://172.23.11.6:9095

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=/log/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

group.initial.rebalance.delay.ms=0
auto.create.topics.enable=true

3. 设置格式化存储(必须)

./bin/kafka-storage.sh format -t 你的集群ID -c ./config/server.properties

三、启动测试

nohup ./bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &

四、优化

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

2. 创建停止脚本

#!/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

3. 给脚本授权

# 给启动脚本添加执行权限
chmod +x start-kafka.sh
# 给停止脚本添加执行权限
chmod +x stop-kafka.sh

#使用方式
# 启动 Kafka(在 Kafka 安装根目录执行)
./start-kafka.sh
# 停止 Kafka(在 Kafka 安装根目录执行)
./stop-kafka.sh

4. 设置开机自启

# 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

完美,打完收工~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐