Kafka集群版安装部署

1.1、概述

        Kafka是一个能够支持高并发以及流式消息处理的消息中间件,并且Kafka天生就是支持集群的,今天就主要来介绍一下如何搭建Kafka集群。对于Kafka的集群来说,有两种情况:单节点多Broker部署、集群部署(多节点多Broker)。单节点多Broker部署的集群本质上还是集群,只不过是部署在了一台主机,其他功能完全一样。更多关于单节点多Broker部署、集群部署(多节点多Broker)的描述请参考Kafka单机版安装部署文章中的概述部分,这里不在赘述。

1.2、Kafka集群中的节点类型

        首先需要了解一下,一个Kafka集群是由下列几种类型的节点构成的,它们充当着不同的作用:

  • Broker节点
            即代理节点,是Kafka中的工作节点,充当消息队列的角色,负责储存和处理消息,每个Broker都是一个独立的Kafka服务器,可以在不同的机器上运行,除此之外Broker还负责分区(partition)的管理,将主题(topic)划分为多个分区,并分布在集群的不同Broker上。
  • Controller节点
            即控制器节点,是集群中的特殊节点,负责储存和管理整个集群元数据和状态,它能够监控整个集群中的Broker,在需要时还能够进行平衡操作。
  • 混合节点
            即同时担任Broker和Controller节点角色的节点。

1.3、系统环境

        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

Kafka2.7.2版本安装包下载

1.4、集群规划

        本次安装部署将采用3台服务器搭建一个kafka生产集群,服务器列表如下:

服务器ip应用
172.16.20.5ZooKeeper、Kafka v_2.7.2
172.16.20.6ZooKeeper、Kafka v_2.7.2
172.16.20.7ZooKeeper、Kafka v_2.7.2

高版本的Kafka已经抛弃了ZooKeeper。

1.5、部署架构

        在Zookeeper模式集群中,Zookeeper节点(或者集群)就充当了Controller的角色,而所有的Kafka节点就充当着Broker的角色。具体架构图如下:
架构图

1.6、部署流程

        本文将在三台操作系统为CentOS Linux release 8.4.2105、Java环境为JDK17.0.7、ZooKeeper3.8.4版本的生产集群的服务器上部署Kafka2.7.2版本的生产集群,具体流程如下:

1.6.1、部署ZooKeeper集群

        部署Kafka集群之前,需要部署一个ZooKeeper集群,因为ZooKeeper节点(或者集群)就充当了Controller的角色,负责储存和管理整个集群元数据和状态,它能够监控整个集群中的Broker,在需要时还能够进行平衡操作。ZooKeeper集群请参考Zookeeper集群版安装部署这篇博文,这里不在赘述。

1.6.2、每台服务器上部署Kafka

        这一部分请参考Kafka单机版安装部署这篇博文,这里不在赘述。

1.6.3、修改Kafka配置文件

        进入每台服务器的kafka_2.12-2.7.2/config目录,使用文本编辑器(如 vi、nano 或 emacs)打开server.properties文件并进行如下配置:# 唯一标识 broker.id,# 数据存储路径 log.dirs, # 监听地址 listeners, # ZooKeeper 地址 zookeeper.connect等配置项。172.16.20.5服务器的配置文件如下:
172.16.20.5
        172.16.20.6服务器的配置文件如下:
172.16.20.6
        172.16.20.7服务器的配置文件如下:
172.16.20.7

1.6.4、启动Kafka集群服务

        启动Kafka集群服务时先要启动ZooKeeper集群服务,再启动Kafka集群服务;关闭服务时先要关闭Kafka集群服务,在关闭ZooKeeper集群服务。启动Kafka集群服务时,需要在每台服务器上进入 kafka_2.12-2.7.2/bin 目录,执行 ./kafka-server-start.sh ../config/server.properties 命令启动 单个Kafka服务,启动成功后的效果如下:
启动成功

1.7、Kafka集群可用性验证

1.7.1、ZooKeeper集群数据写入测试

        客户端连接zookeeper集群,查看kafka的元数据是否已经写入,首先进入ZooKeeper集群中的任意一台服务器的安装目录:./apache-zookeeper-3.8.4-bin/bin,在执行命令./zkCli.sh -server 172.16.20.6:2182连接到服务节点,最后执行命令 ls / 查看节点信息,正常可用性的效果如下:
ZooKeeper集群成功
节点信息

1.7.2、创建Topic测试

        创建Topic时,先进入Kafka集群中任意一台服务器的 kafka_2.12-2.7.2/bin 目录,执行 ./kafka-topics.sh --create --topic test-topic-1 --bootstrap-server 172.16.20.5:9094 --partitions 3 --replication-factor 3 命令创建一个名为test-topic的主题,创建成功后的效果如下:
主题创建成功
        然后在进入Kafka集群中另外一台服务器的 kafka_2.12-2.7.2/bin 目录,执行 ./kafka-topics.sh --list --bootstrap-server 172.16.20.6:9094命令上述创建的名为test-topic-1的主题,成功的效果如下:
数据同步
        可见我们在第一个节点上创建了主题,但是在第二个节点上仍然可以获取这个主题,说明集群创建成功,数据在集群之间可以共享。

1.7.3、生产消息测试

        启动生产者时,先进入 kafka_2.12-2.7.2/bin 目录,执行 ./kafka-console-producer.sh --broker-list 172.16.20.5:9094,172.16.20.6:9094,172.16.20.7:9094 --topic test-topic-1命令后就可以向名为test-topic-1的主题中生产消息,效果如下:
生产消息

1.7.4、消费消息测试

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

giser@2011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值