当前位置:   article > 正文

搭建kafka集群

搭建kafka集群

前言

搭建kafka集群用到zookeeper,前提是先把zookeeper集群搭建起来,详细搭建可参考这篇文章:CSDNicon-default.png?t=N658https://mp.csdn.net/mp_blog/creation/editor/131626457

 kafka是什么,说白就是个消息中间件,gpt一问

 kafka 相关名词解释:

1.producer:
  消息生产者,发布消息到 kafka 集群的终端或服务。
2.broker:
  kafka 集群中包含的服务器。
3.topic:
  每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
4.partition:
  partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
5.consumer:
  从 kafka 集群中消费消息的终端或服务。
6.Consumer group:
  high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:
  partition 的副本,保障 partition 的高可用。
8.leader:
  replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
9.follower:
  replica 中的一个角色,从 leader 中复制数据。
10.controller:
  kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
11.zookeeper:
  kafka 通过 zookeeper 来存储集群的 meta 信息。

你起码得知道这是个啥东西,你才能搭建配配置

需要准备的东西

用到了三台虚拟机,ip地址分别是192.168.140.130,192.168.140.131,192.168.140.132,需要在虚拟机安装java环境。

搭建步骤

其实搭建那些什么集群多了,你就会发现无非玩来玩去就那几样。首先需要去官网下载它,这里可能需要注意的是版本(举个例子,可能在一些旧的版本配置文件以conf结尾,新一点的以什么properties),很多文章搭建都是很久远的事情,技术都是在不断变化的,更何况是在it届,你前脚刚学完一个什么消息中间件,后脚又更新另外一个。这边刚出完一个框架,你刚用的得心应手,就又又又出了另外一个。但是很多东西它还是换汤不换药。总结规律很重要。像这些集群搭建你多搭几个你就会发现无非就是先去下载安装,配置它的环境变量(配置环境变量作用就不用多说了吧,随时随地能运行它的脚本,而不是每次运行都得进入那个目录),然后就是配置文件(感觉这些集群玩的就是配置文件)无非就是配置它日志存放的地方(一般他会有一个默认的),但一般都是自己创建一个,然后在配置文件指定它存放的地方,日志一般就叫log啥,另一个就是数据(data)之类的东西,然后就是他的一些默认端口号,集群的ip地址啥的,然后就是一些连接超时的时间等等。在搞定配置文件后就是开放相应的防火墙端口号了,然后用命令检查集群的搭建状态。话不多数,上操作。

具体步骤

去kafka官网下载kafka的包,老规矩,用一些终端连接工具先连接三台虚拟机,然后把下载的文件解压并重新命名(不然就是一堆又臭又长的名字,每次cd进去你的都得打半天)这里用的kafka版本是3.5.0(还有 前提你已经搭建号zookeeper集群了,因为注册中心用的是zookeeper,在接下的配置文件中需要填写zookeeper的集群地址)

 一般这种下好后可以cd进去看看,无非就是有一些bin(存放一些脚本的地方,什么启动kafka服务,关掉kafka服务.sh文件),lib(存放它的一些依赖包啥的),config(就是存放那些配置文件的地方)上来就是一个ls

这个kafka-log是没有的,这就是之前讲到的你自己创建一个日志存放的地方,那个logs是默认的,好了,直接cd进入config server.properties就是我们需要配置的配置文件,直接vim进去

 

这三个你配置一下的,具体是啥呢,直接复制丢给gpt解释一下

 这是 Kafka 的配置文件中的三个属性设置:

  1. broker.id=3:这是 Kafka Broker 的唯一标识符。在一个 Kafka 集群中,每个 Broker 都有一个唯一的 ID,用于唯一标识该 Broker。每个 Broker 的 ID 必须是唯一的,并且通常在集群配置中手动分配。

  2. host.name=192.168.140.132:9092:这是 Kafka Broker 的主机名和端口号。在这个示例中,Kafka Broker 的主机名是 192.168.140.132,使用的端口号是 9092。Kafka Broker 使用这个配置来监听客户端的连接请求,并将消息与客户端进行交互。

  3. listeners=PLAINTEXT://192.168.140.132:9092:这是 Kafka Broker 监听客户端连接的网络接口和地址。在这个示例中,Kafka Broker 使用 PLAINTEXT 协议在 192.168.140.132 的 9092 端口上监听客户端连接。您可以根据需要配置多个监听器,以支持不同的协议和网络接口。

这些配置属性在 Kafka 的 server.properties 文件中设置。每个 Kafka Broker 在启动时都需要加载该文件,并根据其中的配置进行初始化。在一个 Kafka 集群中,每个 Broker 的配置文件可以有所不同,以适应不同的角色和配置需求。

其他乱七八糟不要管,一个是日志,num.partitions=1(为啥要提这个呢,这里有一个注意点,如果你这里设置分区为1了,后面用kafka-topics.sh --create --topic my-topic --partitions 3 --replication-factor 3 --bootstrap-server 192.168.140.130:9092,这里是创建一个my-topic,并且拥有三个分区和三个副本因子,但是不能生效,因为你在配置文件设为了1,所以它不会生效)

如果在 Kafka 配置文件中显式地设置了 num.partitions=1,那么创建主题时指定的分区数量将被忽略,而使用配置文件中的默认值。

Kafka 的配置文件中的 num.partitions 属性确定了在创建新主题时使用的默认分区数量。如果您在配置文件中设置了 num.partitions=1,则无论您在创建主题时指定了其他分区数量,都会被忽略,而使用配置文件中的默认值。

这意味着,如果您的配置文件中设置了 num.partitions=1,则无论您使用什么命令创建主题,分区数量都将被限制为 1。这对于测试和开发目的可能是有用的,但在生产环境中,您可能需要根据需求设置适当的分区数量。

如果您希望在创建主题时指定分区数量生效,您需要确保在配置文件中没有设置 num.partitions 属性,或者将其设置为与您希望的分区数量相匹配的值。

总结来说,如果配置文件中设置了 num.partitions=1,则主题的分区数量将被限制为 1,而不会受到创建主题时指定的分区数量的影响。

填上自己的zookeeper集群地址,保存完后就是开放端口了,记得三台服务器都要配置,不同点在于 broker.id(每台机器的kafka id是唯一的,比如三台分别为1,2,3,host.name,listeners填上对应的虚拟机IP地址)这里唯一开放的端口号就是9092

  1. firewall-cmd --zone=public --add-port=2888/tcp --permanent
  2. firewall-cmd --reload
  3. firewall-cmd --list-all

list-all看一下

然后再telnet (养成好的习惯,看看能不能连接上这个ip的这个端口,经常忘记开端口找了很久问题,后面折腾一阵子发现是以为端口没开。。。。) 

出现这个就证明没毛病。下一步就是启动服务了

kafka-server-start.sh /kafka/config/server.properties

 记得配置好环境变量,怎么配置linux中的环境变量,自行百度。后面的配置文件的路径要写对。对了,如果以这个启动,进入的是kafka的命令行,你如果要创建topic还得另外打开一个终端,所以直接以后台方式后者守护进程方式启动

  1. kafka-server-start.sh -daemon /kafka/config/server.properties#守护进程
  2. nohub kafka-server-start.sh /kafka/config/server.properties

启动后就可以创建topic了

kafka-topics.sh --create --topic aa-topic --partitions 3 --replication-factor 3 --bootstrap-server 192.168.140.130:9092

这里我创建了一个aa-topic,并且是在192.168.140.130:9092

可以看见创建成功,你还可以用一下命令查看某个集群下的topic 

kafka-topics.sh --bootstrap-server 192.168.140.130:9092 --list#查看当前集群有的topic

 可以看见刚刚创建的topic,下一步就是生产者把消息指定aa-topic 上

kafka-console-producer.sh --topic aa-topic --bootstrap-server 192.168.140.130:9092

可以看到生产了ddd,fff,ggg三条消息,接着就是消费者消费消息 

kafka-console-consumer.sh --topic aa-topic --bootstrap-server 192.168.140.130:9092 --from-beginning

 可以看到这三条消息,为了检验集群,在更换一下IP地址,第一次是192.168.140.130,这次换成192.168.140.131,或者132,如果查看131消息也能被消费到,证明集群没啥问题

kafka-console-consumer.sh --topic aa-topic --bootstrap-server 192.168.140.131:9092 --from-beginning

 在131也能看到消息。ok完美收工!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/793724
推荐阅读
相关标签
  

闽ICP备14008679号