如何在Linux中安装和配置Kafka Linux部署分布式消息系统的方法

阿辰大大_3825

阿辰大大_3825

2026-05-26

1088人浏览

原创

kafka在linux上成功运行的关键是正确配置listeners和advertised.listeners:前者绑定本机网卡(如plaintext://192.168.1.42:9092),后者声明对外可访问地址,两者必须分离且匹配网络场景——单机用localhost,局域网集群用真实内网ip,跨公网或容器环境须配外网ip/域名/负载均衡地址,并确保log.dirs权限路径一致、kraft模式下先生成再格式化cluster.id。

如何在linux中安装和配置kafka linux部署分布式消息系统的方法

Kafka 在 Linux 上能跑起来,关键不是装对版本,而是配对 listeners 和 advertised.listeners —— 其他问题基本都绕不开这点。

listeners 和 advertised.listeners 必须分开写

这是 Kafka 启动后节点间发现失败、Producer/Consumer 连不上最常踩的坑。Kafka 启动时用 listeners 绑定本机网卡(比如 PLAINTEXT://192.168.1.42:9092),但其他服务连它时,实际走的是 advertised.listeners 里声明的地址。

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

KRaft 模式下 cluster.id 和 node.id 必须先生成再格式化

Kafka 3.3+ 支持无 ZooKeeper 的 KRaft 模式,但漏掉初始化步骤,启动直接报错且不提示原因,日志只显示 Fatal error during KafkaServer startup 或卡在 Waiting for controller to begin election。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 先运行 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)

log.dirs 权限和路径不一致是静默失败主因

很多部署卡在“启动没报错但 Producer 连不上”,其实是 log.dirs 目录没创建、权限不对,或路径在多台机器上不统一。

  • log.dirs=/opt/kafka/data 这个路径必须提前 mkdir -p /opt/kafka/data
  • 确保运行 Kafka 的用户(如 kafka 或 root)对该目录有读写权限:chown -R kafka:kafka /opt/kafka/data
  • 多节点部署时,每台的 log.dirs 值可以不同,但路径本身必须存在且可写;若用 NFS 共享,需额外确认锁机制兼容性
  • 错误现象:启动日志出现 java.io.IOException: Permission denied,但不会指明是哪个目录

ZooKeeper 模式下 zookeeper.connect 不能写 localhost:2181

哪怕你只搭一个 ZooKeeper 单点,也别在 zookeeper.connect 里写 localhost:2181 —— Kafka 启动时会调用 getLocalHost 反查自己的 hostname,如果解析成 127.0.0.1,ZooKeeper 就会拒绝注册。

  • 正确写法是填 ZooKeeper 所在机器的真实 IP,例如 192.168.1.42:2181
  • 如果 ZooKeeper 是集群,要写全地址列表:192.168.1.42:2181,192.168.1.41:2181,192.168.1.47:2181
  • 错误日志典型表现:Connection refused 或反复刷 NoNodeException
  • 验证方式:用 telnet 192.168.1.42 2181 确认端口通,再用 echo stat | nc 192.168.1.42 2181 看是否返回 ZooKeeper 状态

真正麻烦的从来不是“怎么装”,而是配置项之间隐含的依赖关系 —— 比如 cluster.id 没生成,meta.properties 就不会出现,后续所有操作都失去上下文;又比如 log.dirs 权限错,连日志都不告诉你错在哪。这些点一旦漏掉,排查成本远高于重做一遍初始化。

相关文章

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

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

下载

相关标签:

linux

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

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2073

5

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.07

3214

5

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

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

2024.01.12

2866

5

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

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

2024.02.23

650

5

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

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

2024.02.23

624

5

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

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

2026.02.04

690

32

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

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

2023.06.21

4190

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3533

10

linux find
linux find

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

2023.06.30

2773

5

热门下载

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

精品课程

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

共0课时 | 0人学习

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

共0课时 | 0人学习

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

共0课时 | 0人学习