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

完美,打完收工~

相关推荐
A小辣椒18 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式