华为云服务器Ubuntu 24.04 安装 Kafka20260318

Ubuntu 24.04 安装 Kafka_2.13-4.2.0 (最新版,无 Zookeeper) KRaft

Ps:我们考虑 KRaft 模式 后期用

  • 安装前准备

apt update

apt install openjdk-17-jdk -y

cd /opt/

mkdir kafka

cd /tmp/

mkdir kraft-combined-logs

  1. 更新系统软件包

sudo apt update && sudo apt upgrade -y

  1. 安装Java运行环境(Kafka依赖Java 8+)

sudo apt install openjdk-17-jdk -y

  1. 验证Java安装

java -version

输出应显示Java 17.x版本信息

二、下载Kafka安装包

  1. 下载kafka_2.13-4.2.0.tgz

wget https://archive.apache.org/dist/kafka/4.2.0/kafka_2.13-4.2.0.tgz

wget https://downloads.apache.org/kafka/4.2.0/kafka_2.13-4.2.0.tgz

  1. 解压安装包

tar -xzf kafka_2.13-4.2.0.tgz

  • 配置环境变量

常用文件说明

cd /opt/kafka/kafka_2.13-4.2.0/

bin/kafka-server-start.sh:启动 Kafka Broker 的核心脚本。

bin/kafka-server-stop.sh:停止脚本。

bin/kafka-topics.sh:用于创建和查看 Topic 的命令行工具。

bin/kafka-console-producer.sh:用于测试发送消息的工具。

bin/kafka-console-consumer.sh:用于测试接收消息的工具。

bin/kafka-storage.sh:KRaft 模式下的重要工具,用于格式化日志目录(在启动前必须执行)。

  1. 编辑环境变量配置文件

vi /etc/profile

sudo nano /etc/profile

  1. 添加以下内容到文件末尾

export KAFKA_HOME=/opt/kafka/kafka_2.13-4.2.0

export PATH=PATH:KAFKA_HOME/bin

  1. 使环境变量生效

source /etc/profile

  1. 生成集群 ID(Kafka 4.x 必需)jdk要17要不然会报错

cd /opt/kafka/kafka_2.13-4.2.0/bin

./kafka-storage.sh random-uuid

生成数值,集群 ID=yVxGm4C4RIqEhpJSyMNUVw

生成集群 ID

cd /opt/kafka/kafka_2.13-4.2.0/bin

bin/kafka-storage.sh random-uuid

root@ecs-25ff:/opt/kafka/kafka_2.13-4.2.0# bin/kafka-storage.sh random-uuid

RxUKPmEgQ2Wau0mrxX_a2A

生成集群 ID

cd /opt/kafka/kafka_2.13-4.2.0

CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)

echo $CLUSTER_ID

root@ecs-25ff:/opt/kafka/kafka_2.13-4.2.0# CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)

root@ecs-25ff:/opt/kafka/kafka_2.13-4.2.0# echo $CLUSTER_ID

13o4bAfPRZOjwEKCb7ONXg

  1. 格式化存储目录(替换你的 UUID)

cd /opt/kafka/kafka_2.13-4.2.0

bin/kafka-storage.sh format -t $CLUSTER_ID -c config/kraft/server.properties

Cd 到/opt/kafka/kafka_2.13-4.2.0/config 检查有没有kraft目录,没有的需要mkdir kraft,然后把server.properties拷贝到config/kraft/目录下

将 <your-uuid> 替换成你刚刚生成的 UUID

bin/kafka-storage.sh format -t <your-uuid> -c config/kraft/server.properties

cd /opt/kafka/kafka_2.13-4.2.0/

bin/kafka-storage.sh format -t RxUKPmEgQ2Wau0mrxX_a2A -c config/kraft/server.properties

四、配置Kafka

  1. 进入Kafka配置目录

cd /opt/kafka/kafka_2.13-4.2.0/config

  1. 编辑server.properties文件

sudo nano server.properties

vi server.properties

  1. 修改以下关键配置(根据实际需求调整)

broker.id=0 (单节点保持默认)

listeners=PLAINTEXT://localhost:9092

log.dirs=/tmp/kraft-combined-logs

情况A:如果你想要合署模式(同时运行 broker 和 controller)

vim config/kraft/server.properties

角色设置:同时担任broker和controller

process.roles=broker,controller

监听器配置:必须包含CONTROLLER和PLAINTEXT

listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093

controller监听器名称:必须与上面的listeners中的名称对应

controller.listener.names=CONTROLLER

其他必要配置

node.id=1

controller.quorum.voters=1@localhost:9093

客户端连接的地址,必须配置为客户端能够访问的地址

advertised.listeners=PLAINTEXT://localhost:9092

情况B:如果你想要纯Controller模式(只运行 controller)

角色设置:只担任controller

process.roles=controller

监听器配置:只需要CONTROLLER

listeners=CONTROLLER://0.0.0.0:9093

controller监听器名称:必须与上面的listeners中的名称对应

controller.listener.names=CONTROLLER

其他必要配置

node.id=1

controller.quorum.voters=1@localhost:9093

五、Kafka

启动Kafka(后台运行)

cd /opt/kafka/kafka_2.13-4.2.0/

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-server-start.sh -daemon /opt/kafka/kafka_2.13-4.2.0/config/server.properties

  1. 验证服务状态

jps

应显示Kafka进程

能看到 Kafka 进程。

ps -ef | grep kafka

检查 Kafka 进程

jps

如果看到 Kafka 进程,说明 Kafka 正在运行:

12346 Jps

如果没有看到 Kafka 进程,检查所有 Java 进程:

ps -ef | grep kafka

方法2:检查 Kafka 监听端口

Kafka 默认使用 9092 端口:

查看端口监听状态

netstat -tlnp | grep 9092

或者使用 ss 命令

ss -tlnp | grep 9092

六、创建测试主题

  1. 创建名为xingchuangyuan的主题

参数说明:

--create:创建主题

--topic xingchuangyuan:主题名称

--bootstrap-server localhost:9092:Kafka 服务器地址

--partitions 3:设置3个分区(可以根据需要调整)

--replication-factor 1:复制因子为1(如果只有一个 broker)

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-topics.sh --create --topic xingchuangyuan --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1

  1. 验证主题是否创建成功,查看主题列表

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

查看主题的详细信息:

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-topics.sh --describe --topic xingchuangyuan --bootstrap-server localhost:9092

七、测试Kafka功能

  1. 启动生产者(新终端)

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-console-producer.sh --topic xingchuangyuan --bootstrap-server localhost:9092

  1. 启动消费者(新终端)

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-console-consumer.sh --topic xingchuangyuan --bootstrap-server localhost:9092 --from-beginning

  1. 在生产者终端输入消息,消费者终端应能接收消息

八、设置开机自启动

  1. 创建Kafka服务文件,创建 systemd 服务(开机自启)

vi /etc/systemd/system/kafka.service

添加以下内容:

Unit

Description=Kafka Service

After=zookeeper.service

Service

Type=simple

User=root

ExecStart=/opt/kafka/kafka_2.13-4.2.0/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-4.2.0/config/kraft/server.properties

ExecStop=/opt/kafka/kafka_2.13-4.2.0/bin/kafka-server-stop.sh

Restart=on-failure

Install

WantedBy=multi-user.target

  1. 启用并启动服务

systemctl daemon-reload

systemctl enable kafka

systemctl start kafka

查看服务状态

sudo systemctl status kafka

显示 active (running) 绿色 → 成功

ss -tulpn | grep java

  • 停止Kafka服务

确认 Kafka 是否正在运行

jps | grep Kafka

如果没有看到 Kafka 进程,先启动 Kafka:

/opt/kafka/kafka_2.13-4.2.0/bin/kafka-server-start.sh -daemon /opt/kafka/kafka_2.13-4.2.0/config/server.properties

常见问题解决

  • 端口冲突:修改server.properties中的listeners端口
  • 启动失败:检查日志文件(/tmp/kafka-log )
  • 权限问题:确保Kafka目录有足够权限

查看当前的配置文件

cat config/kraft/server.properties | grep -E "listeners|controller.listener.names|process.roles"

特别检查 controller.quorum.voters 是否存在

grep "controller.quorum.voters" config/kraft/server.properties

相关推荐
wanhengidc14 小时前
服务器如何防范病毒攻击
运维·服务器·游戏
ylatin14 小时前
frp使用 网络
运维·服务器·网络
z2023050814 小时前
RDMA之NVIDIA Zero Touch RoCE (ZTR),和RTT的应用(9)
linux·服务器·网络·人工智能·ai
晚风予卿云月15 小时前
【Linux】初步构建框架—虚拟地址空间(三)—进程与内存管理的解耦优势、深入理解vm_area_struct
linux·运维·服务器·面试
全球通史15 小时前
Jetson Nano 双摄像头芯片检测视觉系统:小尺度难定位问题解决,从零开始实现教程说明
嵌入式硬件·算法·ubuntu·性能优化
土星云SaturnCloud15 小时前
边缘计算微服务器自然散热技术详解
服务器·人工智能·ai·边缘计算
张小姐的猫15 小时前
【Linux】多线程实战 —— 日志类 | 策略模式
linux·运维·服务器·c++·bash·策略模式
handler0115 小时前
【Linux】五种IO模型详解
linux·运维·服务器·c语言·网络·笔记·php
运维行者_21 小时前
Applications Manager中的Redis监控
大数据·服务器·数据库·人工智能·网络协议