Linux怎么安装和配置Kafka Linux消息队列集群部署详解

雨宇小哥_5394

雨宇小哥_5394

2026-05-12

384人浏览

原创

kafka集群部署失败主因是listeners与advertised.listeners配置错误、broker.id重复或log.dirs权限/路径不一致;两者必须分离配置:listeners绑定本机ip,advertised.listeners声明对外可访问地址,否则节点间无法发现。

linux怎么安装和配置kafka linux消息队列集群部署详解

Kafka 集群在 Linux 上部署失败,90% 是因为监听地址没写对、broker.id 重复、或 log.dirs 目录权限/路径不一致 —— 不是版本装错了,也不是 Java 没装好。

为什么 listeners 和 advertised.listeners 必须分开配

这是 Kafka 网络通信最常翻车的点。Kafka 启动后,会用 listeners 绑定本机网卡(比如 PLAINTEXT://192.168.1.42:9092),但其他节点和客户端连它时,实际走的是 advertised.listeners 里声明的地址。如果两者都写 localhost 或都写 0.0.0.0,集群内 broker 就互相发现不了。

  • 本地单机测试:两个都设成 PLAINTEXT://localhost:9092 即可
  • 三节点局域网集群:每个节点 listeners 写自己真实 IP,advertised.listeners 也必须写同一 IP(不能写 hostname,除非所有机器 /etc/hosts 互相解析正确)
  • 跨公网访问:advertised.listeners 要写外网可访问的 IP 或域名,且防火墙必须放行对应端口
  • 容器或云主机场景:若用 NAT 或 SLB,advertised.listeners 得写负载均衡地址,否则 Producer/Consumer 会连到内网地址然后超时

kafka-storage.sh random-uuid 和 kafka-storage.sh format 的执行顺序不能错

KRaft 模式(Kafka 3.3+)下,server.properties 里的 cluster.id 和 node.id 必须跟磁盘上初始化出来的元数据匹配,否则启动直接报 Cluster ID mismatch 或卡在 Waiting for controller to begin election。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • 先运行 bin/kafka-storage.sh random-uuid 得到一串 UUID,比如 I_p69ZTITRmhtpbLW-uGfA
  • 把这串值填进 config/kraft/server.properties 的 cluster.id=I_p69ZTITRmhtpbLW-uGfA
  • 再执行 bin/kafka-storage.sh format -t I_p69ZTITRmhtpbLW-uGfA -c config/kraft/server.properties
  • 格式化完会在 log.dirs 指定路径下生成 meta.properties,里面含 node.id 和 cluster.id,必须和配置文件严格一致
  • 切记:三台机器共用同一个 cluster.id,但每台的 node.id 必须不同(1/2/3)

ZooKeeper 模式下 zookeeper.connect 地址写法有坑

哪怕你只搭一个 ZooKeeper 单点,也不能写 localhost:2181 —— 因为 Kafka broker 启动时会调用 getLocalHost 反查自己的 hostname,如果 hostname 解析成 127.0.0.1,ZooKeeper 就会拒绝注册,日志里反复出现 Connection refused 或 NoNodeException。

  • 统一用具体 IP:如 zookeeper.connect=192.168.1.42:2181,192.168.1.41:2181,192.168.1.47:2181
  • 确保每台机器的 /etc/hosts 里没有把 hostname 映射到 127.0.0.1(检查 hostname -i 输出是否为内网 IP)
  • ZooKeeper 自身的 zoo.cfg 中 server.x 行必须用 IP,不能用主机名;对应机器的 myid 文件内容必须和 server.x 的 x 一致
  • 启动顺序必须是:先启全部 ZooKeeper,再启 Kafka;停机顺序相反,否则 Kafka 关闭时可能残留 ZNode 导致下次启动异常

systemd 启动 Kafka 时 ExecStart 必须加 -daemon

如果不加,kafka-server-start.sh 会前台阻塞,systemd 会一直等它“成功退出”,结果服务状态永远是 activating (start),journalctl -u kafka 里看不到有效日志。

  • 正确写法:ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties(ZK 模式)
  • 或:ExecStart=/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties(KRaft 模式)
  • 环境变量 JAVA_HOME 必须显式声明,不能依赖用户 profile;建议在 systemd unit 文件里用 Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"(路径按实际 JDK 安装位置调整)
  • 日志重定向很重要:StandardOutput=journal + StandardError=journal,否则 journalctl 查不到错误

真正难的不是步骤多,而是 Kafka 启动日志里混着 INFO、WARN、ERROR,关键错误往往藏在几百行滚动日志中间,比如 Failed to create new log directory 或 Invalid value null for configuration node.id —— 这些才是该盯住看的。

相关文章

Kafka Eagle可视化工具
Kafka Eagle可视化工具

Kafka Eagle是一款结合了目前大数据Kafka监控工具的特点,重新研发的一块开源免费的Kafka集群优秀的监控工具。它可以非常方便的监控生产环境中的offset、lag变化、partition分布、owner等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
kafka消费者组有什么作用
kafka消费者组有什么作用

kafka消费者组的作用:1、负载均衡;2、容错性;3、广播模式;4、灵活性;5、自动故障转移和领导者选举;6、动态扩展性;7、顺序保证;8、数据压缩;9、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.01.12

2806

5

kafka消费组的作用是什么
kafka消费组的作用是什么

kafka消费组的作用:1、负载均衡;2、容错性;3、灵活性;4、高可用性;5、扩展性;6、顺序保证;7、数据压缩;8、事务性支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

630

5

rabbitmq和kafka有什么区别
rabbitmq和kafka有什么区别

rabbitmq和kafka的区别:1、语言与平台;2、消息传递模型;3、可靠性;4、性能与吞吐量;5、集群与负载均衡;6、消费模型;7、用途与场景;8、社区与生态系统;9、监控与管理;10、其他特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

604

5

Java 流式处理与 Apache Kafka 实战
Java 流式处理与 Apache Kafka 实战

本专题专注讲解 Java 在流式数据处理与消息队列系统中的应用,系统讲解 Apache Kafka 的基础概念、生产者与消费者模型、Kafka Streams 与 KSQL 流式处理框架、实时数据分析与监控,结合实际业务场景,帮助开发者构建 高吞吐量、低延迟的实时数据流管道,实现高效的数据流转与处理。

2026.02.04

670

32

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4130

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3513

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2713

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6650

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6302

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习