当前位置: 首页 > news >正文

Kafka单机版安装部署

目录

  • 1.1、概述
  • 1.2、系统环境
  • 1.3、ZooKeeper的作用
  • 1.4、部署流程
    • 1.4.1、下载安装包
    • 1.4.2、解压文件
    • 1.4.3、创建日志目录
    • 1.4.4、配置Kafka
    • 1.4.5、启动Kafka服务
    • 1.4.6、启动成功验证
  • 1.5、创建Topic测试
  • 1.6、消息生产与消费测试
    • 1.6.1、启动生产者
    • 1.6.2、启动消费者

1.1、概述

        Kafka的搭建模式包括单节点单Broker部署、单节点多Broker部署、集群部署(多节点多Broker),分别适用于不同的场景和需求,从简单的单节点测试环境到复杂的多节点高可用生产环境。在实际部署时,应根据系统的可用性要求、数据量、并发负载等因素选择合适的部署模式。

  • 单节点单Broker部署
            在这种部署方式中,Kafka的所有服务都运行在单个节点上,包括单个Kafka Broker。这种部署方式适用于开发或测试环境,但在生产环境中可能不是最佳选择,因为它不具备高可用性和负载均衡的能力。
  • 单节点多Broker部署
            这种部署方式在单个节点上运行多个Kafka Broker实例。每个Broker实例有不同的配置文件,通常使用不同的端口号和日志目录。这种方式在单台物理机或虚拟机上提供了更好的资源利用,但仍然不具备高可用性,因为所有服务仍然依赖于单个节点的稳定性。
  • 集群部署(多节点多Broker)
            在集群部署中,Kafka Broker分布在多个物理或虚拟节点上。每个Broker实例通常都有自己的配置文件,并连接到一个共同的ZooKeeper集群,以协调和同步集群内的信息。集群部署方式提供了高可用性、容错能力和水平扩展性,是生产环境中的首选部署方式。

1.2、系统环境

        Kafka强依赖ZooKeeper,如果想要使用Kafka,就必须安装ZooKeeper,ZooKeeper的安装教程请参考Zookeeper单机版安装部署这篇博文。Kafka中的消费偏置信息、kafka集群、topic信息会被存储在ZooKeeper中。有人可能会说我在使用Kafka的时候就没有安装ZooKeeper,那是因为Kafka内置了一个ZooKeeper,一般我们不使用它。具体系统环境如下:

环境名称版本号
操作系统CentOS Linux release 8.4.2105
JDK17.0.7
ZooKeeper3.8.4
Kafka3.7.2

1.3、ZooKeeper的作用

        Zookeeper在Kafka中扮演着关键的角色,它提供了分布式协调和配置管理服务,对于Kafka集群的正常运行和高可用性至关重要。Zookeeper在Kafka中的作用主要包括:

  • Leader选举
            Zookeeper负责管理Kafka集群中的Broker选举出Leader的过程。当集群中某个Broker作为Leader发生故障时,Zookeeper会协调其他Broker选举新的Leader,以保证Kafka集群的稳定运行。
  • 配置管理
            Zookeeper存储了Kafka集群的关键元数据,包括主题配置信息、分区信息等。当这些配置需要更新时,Zookeeper确保所有Broker都可以获取到最新的配置信息。
  • 同步
            Zookeeper在Kafka的分布式环境中保证数据的一致性。它管理Kafka集群中的所有Broker,确保它们的状态同步。
  • 节点管理
            Zookeeper跟踪Kafka集群中每个节点的状态和信息。这包括节点加入或离开集群的情况,以及节点的健康状况。
  • 注册并监控Broker,调整负载均衡
            Kafka的每个Broker在启动时,都会在Zookeeper中注册,告诉Zookeeper其Broker ID。当节点失效时,Zookeeper会删除该节点,从而监控整个集群Broker的变化,并能够及时调整负载均衡。
  • 协调生产者和消费者的订阅关系
            Zookeeper帮助Kafka在无状态的条件下建立起生产者和消费者的订阅关系,实现生产者和消费者的负载均衡。
  • 偏移量管理
            在Kafka中,Zookeeper用于提交偏移量。这样,即使节点在任何情况下失败了,它也可以从之前提交的偏移量中恢复。
  • 其他活动
            Zookeeper还执行其他活动,如leader检测、分布式同步、配置管理、识别新节点何时离开或连接、集群、节点实时状态等。

1.4、部署流程

        本文将在操作系统为CentOS Linux release 8.4.2105、Java环境为JDK17.0.7、ZooKeeper为3.8.4版本的服务器上部署Kafka3.7.2版本,部署架构如下图所示。具体流程如下:
部署架构

1.4.1、下载安装包

        用户可以自行在Apache Kafka官网 ,选择最新稳定版本进行下载。在国内,从官网的下载速度较慢,可以从博主提供的资源地址下载:资源下载,也可以选择国内镜像站下载,比如阿里镜像站:阿里镜像 。官网下载和阿里镜像下载如下:
官网下载
阿里镜像
        下载文件一般为一个.tar.gz或.zip格式的压缩包,例如 kafka_2.13-4.0.0.tgz。下载后将安装包保存在服务器上的自定义目录下即可,比如:/usr/local/Kafka。

1.4.2、解压文件

        对于.tar.gz文件,可以使用以下命令进行文件解压。命令如下:

tar -xvzf kafka_2.13-3.7.2.tgz

        解压后,将会生成一个名为 kafka_2.13-3.7.2的目录,该目录即为Kafka的安装目录。为了方便配置,可以重命名 Kafka 安装目录。解压后的目录结构如下:
目录结构

1.4.3、创建日志目录

        根据Kafka的配置要求,需要创建一个目录用于存放日志。命令如下:

mkdir /data/kafka/logs

1.4.4、配置Kafka

        进入kafka_2.13-3.7.2/config目录,使用文本编辑器(如 vi、nano 或 emacs)打开server.properties文件并进行如下配置:# 数据存储路径 log.dirs=/data/kafka/logs # 监听地址 listeners=PLAINTEXT://:9092 # ZooKeeper 地址 zookeeper.connect=localhost:2181。最终配置文件如下:
配置文件

1.4.5、启动Kafka服务

        启动服务时先要启动ZooKeeper,再启动Kafka;关闭服务时先要关闭Kafka,在关闭ZooKeeper。启动Kafka时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-server-start.sh ../config/server.properties 命令启动 Kafka服务,启动成功后的效果如下:
启动成功

1.4.6、启动成功验证

        出现上述界面后,但是并不能保证Kafka已经启动成功,输入jps查看进程,如果可以看到Kafka进程,表示启动成功。具体如下:
Kafka进程

1.5、创建Topic测试

        创建Topic时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1 命令创建一个名为test-topic的主题,创建成功后的效果如下:
创建Topic成功
        也可以通过./kafka-topics.sh --list --bootstrap-server localhost:9092命令查看所有的主题列表,具体如下所示:
主题列表

1.6、消息生产与消费测试

1.6.1、启动生产者

        启动生产者时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092命令后就可以向名为test-topic的主题中生产消息,效果如下:
生产消息

1.6.2、启动消费者

        启动消费者时,先进入 kafka_2.13-3.7.2/bin 目录,执行 ./kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092命令后就可以消费名为test-topic的主题中的消息,效果如下:
消费消息

相关文章:

  • Docker下Gogs设置Webhook推送Spug,踩坑记录与解决方案
  • 机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据
  • 广东省省考备考(第六天5.9)—言语:逻辑填空(每日一练)
  • 初识C++:入门基础(二)
  • 香港科技大学(广州)新开设智能制造理学硕士学位项目2025年9月入学机会
  • 可信数据空间:标准体系建设指南及空间能力要求
  • 【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别
  • Spring AI 系列——使用大模型对文本内容分类归纳并标签化输出
  • python---kafka常规使用
  • nginx的学习笔记
  • shopping mall(document)
  • PPT插入图像自带透明
  • 革新锅炉厂智能控制——Ethernet IP转CANopen协议网关的工业互联新方案
  • gd32 编译环境
  • Java 自动下载 Chromium
  • 嵌入式学习笔记 - 关于单片机的位数
  • Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系
  • ClickHouse多表join的性能优化:原理与源码详解
  • element-ui分页的使用及修改样式
  • 38-算法打卡-栈与队列-前 K 个高频元素-leetcode(347)-第三十八天
  • 重庆荣昌出圈背后:把网络流量变成经济发展的增量
  • 网络主播直播泄机密,别让这些“小事”成威胁国家安全的“突破口”
  • 三大猪企4月生猪销量同比均增长,销售均价同比小幅下降
  • 视频丨习近平同普京在主观礼台出席红场阅兵式
  • 2025世界数字教育大会将于5月14日至16日在武汉举办
  • 【社论】以法治力量促进民企长远健康发展