Linux安装Kafka3.8.0版本不使用zookeeper

一、准备工作

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(必须)
bash 复制代码
./bin/kafka-storage.sh random-uuid
  1. 编辑配置文件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
  1. 设置格式化存储(必须)
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 &

四、优化

  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

完美,打完收工~

相关推荐
gQ85v10Db4 分钟前
Redis分布式锁进阶第十五篇:全系列终极收官复盘 + 全站锁规范归档 + 生产零故障长期运维兜底总方案
运维·redis·分布式
lzh200409196 分钟前
深入学习Linux进程间通信:解析消息队列
linux·c++
苏宸啊30 分钟前
进程替换库函数
linux
智能化咨询32 分钟前
(112页PPT)德勤制造业企业数据治理平台规划方案(附下载方式)
大数据·运维·人工智能
时光之源40 分钟前
安装WSL2后在其中安装Ubuntu24.04.4再安装OpenClaw全流程傻瓜式教学:WSL2 + Ubuntu 24.04 + OpenClaw
linux·运维·ubuntu·openclaw·龙虾
eastyuxiao44 分钟前
流程图 + 配置清单 在团队 / 公司项目管理场景的落地应用
大数据·运维·人工智能·流程图
杨云龙UP1 小时前
Windows Server 2012 环境下 Oracle 11.2 使用 expdp 实现自动备份、异地复制与定期清理_20260504
服务器·数据库·windows·mysql·docker·oracle·容器
大袁同学1 小时前
【进程信号】:溯源硬件起中断,掌舵内核控信号
linux·信号处理
能喵烧香1 小时前
跨越系统的开源尝试:KDE Windows版本全解析
linux·windows·开源
小风吹啊吹~1 小时前
vscode的tunnel链接(Linux 服务器 + Windows 本地电脑版本)
服务器·vscode·microsoft·远程工作