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

完美,打完收工~

相关推荐
亚空间仓鼠2 小时前
Shell脚本详解:从理论到实践(二)
linux·运维·服务器
code_whiter2 小时前
初阶linux1(常见指令以及权限理解)
linux
董崇德2 小时前
当CPU飙高时,SRE的排查清单——USE Method实战
运维
平凡的阳阳2 小时前
千里通Linux盒子搭建FRP全教程:低成本实现内网穿透+代理服务器
linux·frp·内网穿透·代理·socks5·远程ssh
D4c-lovetrain2 小时前
Linux个人心得25 (mysql⑤)
linux·运维·mysql
复园电子2 小时前
HTTPS与TLS1.2双重加密:USB网络数据传输安全的底层核心技术解析
服务器·网络·安全·https
菜_小_白2 小时前
RTP协议收发组件开发
linux·网络·c++
航Hang*2 小时前
Windows Server 配置与管理——第11章:配置虚拟专用网络服务器
运维·服务器·windows
Deitymoon2 小时前
linux——UDP编程
linux·网络·udp