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 |
JDK | 17.0.7 |
ZooKeeper | 3.8.4 |
Kafka | 3.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进程,表示启动成功。具体如下:
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的主题,创建成功后的效果如下:
也可以通过./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的主题中的消息,效果如下: