Centos7系统部署搭建Kafka集群

news2025/2/24 3:13:25

kafka集群搭建

  • 一、环境准备
    • 1.1 服务器准备
    • 1.2 版本信息
    • 1.3 启动kafka环境
      • 1.3.1 获取kafka
      • 1.3.2 启动kafka
        • 1.3.2.1 kafka && ZooKeeper
        • 1.3.2.2 kafak && KRaft
    • 1.4 创建主题
    • 1.5 事件写入主题
    • 1.6 事件读取
    • 1.7 停止kafka环境
  • 二、搭建 kafka 集群
    • 2.1 ZooKeeper 集群搭建
      • 2.1.1 配置文件修改
    • 2.2 kafka 集群搭建
      • 2.2.1 kafka 配置修改
      • 2.2.1 kafka 集群测试
        • 2.2.1.1 创建测试用主题
        • 2.2.1.2 创建消费者
        • 2.2.1.3 创建发布者
        • 2.2.1.4 测试结果

一、环境准备

1.1 服务器准备

搭建kafka集群至少需要3台服务器(或虚拟机也可),我们提前准备好3台不同IP的服务器

iphostname
192.168.2.83kafkaserver1
192.168.2.84kafkaserver2
192.168.2.86kafkaserver3

1.2 版本信息

kafak:2.13-3.4.0;
JDK:1.8+;

1.3 启动kafka环境

1.3.1 获取kafka

首先下载最新版kafka,再解压安装:

$ tar -xzf kafka_2.13-3.4.0.tgz
$ cd kafka_2.13-3.4.0

完成后可以得到一个kafka的文件夹,我这里是直接放在桌面的,各位可以根据自己需求选择文件夹存放。
在这里插入图片描述

1.3.2 启动kafka

Apache Kafka 可以使用 ZooKeeper 或 KRaft 启动,但不能同时使用。

1.3.2.1 kafka && ZooKeeper

以前的kafka之前还需要准备zookeeper环境,新版的kafka中自带由,免去了很多麻烦。

第一步:按顺序启动所有服务:

# Start the ZooKeeper service
$ bin/zookeeper-server-start.sh config/zookeeper.properties

第二步:打开另一个终端会话并运行:

# Start the Kafka broker service
$ bin/kafka-server-start.sh config/server.properties

kafka的bin目录带有zookeeper:
在这里插入图片描述
以上两步命令运行后,可以看到kafka服务已经启动:
在这里插入图片描述

1.3.2.2 kafak && KRaft

第一步:生成集群 UUID

$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

第二步:格式化日志

$ bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties

第三步:启动卡夫卡服务器

$ bin/kafka-server-start.sh config/kraft/server.properties

以上三步命令运行后,同理可以看到kafka服务已经启动,这里就不演示了。

1.4 创建主题

kafka的事件储存在主题中,主题类似于文件系统中的文件夹,事件是该文件夹中的文件。所以,在使用前必须为事件创建主题。

打开另一个终端会话并运行

$ bin/kafka-topics.sh --create --topic kafka-topic-test --bootstrap-server localhost:9092

在这里插入图片描述

Kafka 的所有命令行工具都有额外的选项:运行kafka-topics.sh不带任何参数的命令以显示使用信息。例如,显示 新主题的 分区计数等详细信息:

$ bin/kafka-topics.sh --describe --topic kafka-topic-test --bootstrap-server localhost:9092

在这里插入图片描述

1.5 事件写入主题

Kafka 客户端通过网络与 Kafka 代理通信以写入(或读取)事件。一旦收到,代理将以持久和容错的方式存储事件。

默认情况下,输入的每一行都会导致一个单独的事件被写入主题。

$ bin/kafka-console-producer.sh --topic kafka-topic-test --bootstrap-server localhost:9092
one
two

在这里插入图片描述

1.6 事件读取

打开另一个终端会话并运行控制台消费者客户端以读取事件:

$ bin/kafka-console-consumer.sh --topic kafka-topic-test --from-beginning --bootstrap-server localhost:9092

在这里插入图片描述

1.7 停止kafka环境

使用 停止生产者和消费者客户Ctrl-C。 使用 停止 Kafka 代理Ctrl-C。如果使用 Kafka && ZooKeeper,还需要停止 ZooKeeper 服务器 Ctrl-C。

如果还想删除本地 Kafka 环境的任何数据,包括在此过程中创建的任何事件,请运行以下命令

$ rm -rf /tmp/kafka-logs /tmp/zookeeper /tmp/kraft-combined-logs

二、搭建 kafka 集群

前提条件:按照第一步骤的方法为列出的三台服务器全部安装 kakfa 。
我们这里用的 kafka && ZooKeeper 模式,所以先要搭建 zookeeper 集群。

2.1 ZooKeeper 集群搭建

2.1.1 配置文件修改

我们前面已经安装好了单机版的 kafak,它自带 ZooKeeper,现在我们对它们进行配置搭建集群。

cd kafka_2.13-3.4.0/
cd config/
vim zookeeper.properties

修改zookeeper.properties文件:

1.修改文件目录

dataDir=/var/zookeeper
#添加
initLimit=5
syncLimit=2
tickTime=2000

2.添加服务节点

server.1=192.168.2.83:2888:3888
server.2=192.168.2.84:2888:3888
server.3=192.168.2.86:2888:3888

像下面这样:

在这里插入图片描述

3.创建数据文件夹

# 新建zookeeper.properties 中配置的dataDir目录
mkdir /var/zookeeper
cd /var/zookeeper
# 新建myid文件,三个节点分别设置值为1,2,3
touch myid
echo 1 > /var/zookeeper/myid

4.启动时可能会遇到以下报错:
在这里插入图片描述

这个时候请检查端口是否放开,若没有则有两种方法:

  1. 关闭防火墙
#sudo systemctl stop firewalld
  1. 或者防火墙放行
firewall-cmd --zone=public --add-port=2181/tcp --permanent 
firewall-cmd --zone=public --add-port=3888/tcp --permanent 
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --reload

然后在其他的2个服务器重重复上面的步骤,(注意节点设置)

2.2 kafka 集群搭建

2.2.1 kafka 配置修改

1.修改server.properties

#每个节点唯一
broker.id=1
#填写本地IP
listeners=PLAINTEXT://192.168.2.83:9092
#这里有几个成员就写几个
zookeeper.connect=192.168.2.83:2181,192.168.2.84:2181,192.168.2.86:2181

2.启动 kafka
在这里插入图片描述

3.如果启动报以下错误

在这里插入图片描述
则对meta.properties进行修改,该文件默认在 /tmp/kafka-logs

修改其cluster.id等于Cluster ID即可。

2.2.1 kafka 集群测试

搭建完成后,我们简单的测试一下是否成功。

我们在节点 192.168.2.73上启动一个发布者进行消息发布,在节点192.168.2.84和192.168.2.86上分别启动一个消费者进行事件的消费。

2.2.1.1 创建测试用主题

我们首先创建一个主题 topic-test,并指定分区为 0,读取模式为从头读取,并连接本地服务器。

bin/kafka-console-consumer.sh --bootstrap-server 192.168.2.83:9092 --offset latest --partition 0 --topic topic-test

2.2.1.2 创建消费者

随后我们在每个集群服务其上创建消费者,并指定地址为本地地址

bin/kafka-console-consumer.sh --bootstrap-server 192.168.2.83:9092 --offset latest --partition 0 --topic topic-test

2.2.1.3 创建发布者

随便选一台服务器创建发布者,指定集群列表和主题,并发布消息:

bin/kafka-console-producer.sh  --topic topic-test --broker-list 192.168.2.83:9092,192.168.2.84:9092,192.168.2.86:9092

2.2.1.4 测试结果

发布者:
在这里插入图片描述

消费者
在这里插入图片描述
测试成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何读取照片

Python如何读取照片 介绍 Python是一种高级编程语言,其简单易用、可扩展性强等特点,使其在数据分析、机器学习等领域得到了广泛应用。而在图像处理领域,Python同样也有着较为优异的表现。本文将介绍Python读取照片的方法,并探讨…

普通2本,去过字节外包,到现在年薪30W+的测试开发,我的2年转行心酸经历...

个人简介 我是一个普通二本大学机械专业毕业,17年毕业,19年转行,目前做IT行业的软件测试已经有3年多,职位是高级测试工程师,坐标上海… 我想现在我也有一点资格谈论关于转行这个话题;希望你在决定转行之前…

Linux下面安装jdk和tomcat

1、jdk的安装 1、上传jdk到 opt目录下面 2、解压jdk tar -xvf jdk-8u281-linux-x64.tar.gz3、一般把jdk放到/usr/local (软件的安装都是放到usr下面) mv jdk1.8.0_281 /usr/local/4、配置环境变量 找到 /etc/profile 进行编辑修改 export JAVA_HOM…

速下载 | 200页幻灯片图解新版《商用密码管理条例》

国家高度重视商用密码工作。2023年4月14日,国务院常务会议审议通过了《商用密码条例》(以下简称《条例》)修订草案。5月24日中华人民共和国中央人民政府网站正式公开修订后的正式稿全文。本次《条例》在密码法框架下进行了全面修订&#xff0…

面试“我“又踩坑了,高频软件测试面试题,项目经验板块(付答案)...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 问题1&#xff1a…

(学习日记)2023.06.07

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

基于ChatGPT使用报告 (针对嵌入式领域测试及心得)

目录 1、基于驱动的日志解析提问 错误日志分析【100%】 报错日志分析【90%】 错误日志分析【60%】 2、基于安卓设备调试提问 adb调试i2c【效率50%】 adb调试gpio【50%】 3、基于高通代码的提问 基于高通代码含义的解析【效率80%】 基于高通新增TP驱动提问【效率50%】…

【区块链 | L2】详解Layer 2扩展解决方案Optimism(OP)是如何工作的?

Optimism是一个快速、稳定、可扩展和低成本的以太坊Layer 2区块链。这意味着它在以太坊区块链(Layer1)之上运行,以帮助缓解拥塞,进而降低交易成本和处理时间。作为现有以太坊软件的最小扩展,Optimism的EVM-equivalent 架构可以扩展以太坊应用程序。如果它能在以太坊上工作…

移动端的加解密

目录 引言 算法分类 密钥介绍 模式介绍 算法介绍 小结 写在最后 引言 今天给大家分享一篇有关移动端加解密的文章。随着移动设备的普及,加密技术在保护用户数据方面变得越来越重要。 本文将为您介绍Android加解密算法的分类、优缺点特性及应用,…

前端Vue实现国际化

国际化实现原理 假设我们有一个变量 msg,但是这个 msg 有两个值,一个是 hello,一个是 你好,现在需要我们根据需要切换 msg 的值,如何做呢? // 定义 msg 值的数据源 const msgList {en: {msg: hello},zh:…

智能批量复制文件,轻松实现文件批量复制并实现编号

您有没有遇到过需要将相同类型的多个文件复制到不同文件夹的情况?这个过程可能会非常耗时,尤其当文件的数量很大且需要进行重复编号时,更是一项非常烦琐的工作。细有一个快手的方法可以实现,如下: 首先,第…

基于spring boot框架访问zookeeper

本地部署zookeeper: 进入zookeeper-3.3.6/conf目录下,将zoo_sample.cfg文件改名为zoo.cfg,再用文本编辑器打开这个文件,修改如下红框位置的内容,改成本地一个可以访问的已有目录: 打开命令行窗口&#xff…

高考开始了,计算机专业未来还会火吗?

2023年高考,今天开始第一场考试。而走出考场,考生们也将面临选报专业的难题。高考人数逐年攀升,录取率却不断下降。 过去10年,计算机专业可谓红透半边天,早早进入这个行业的,基本都吃到了很高的红利。然而…

动态规划母题:01背包问题

1. 前置知识 动态规划与图论,前缀和与差分等有模板的算法不同,动态规划更考察思维能力,而不是运用模板的能力。 个人认为 Acwing 关于动态规划的讲解比较容易理解。我会根据 Acwing 的动态规划解题思路来讲解题目。 虽说动态规划没有固定的模…

基于Locust实现MQTT协议服务的压测脚本

一、背景简介 业务背景大概介绍一下,就是按照国标规定,车辆需要上传一些指定的数据到ZF的指定平台,同时车辆也会把数据传到企业云端服务上,于是乎就产生了一些性能需求。 目前我们只是先简单的进行了一个性能场景的测试&#xf…

PMP考试到底难在哪里?

那么,PMP考试到底难在哪? 01涉及面广 目前PMP考试内容大部分来源于教材《PMBOK指南》和《敏捷实践指南》。 作为考试出题的知识基础《PMBOK指南》,总共有700多页,所覆盖的知识面很广。 另一方面,根据最新版考纲&am…

使用大型语言模(LLM)构建系统(二):内容审核、预防Prompt注入

今天我学习了DeepLearning.AI的 Building Systems with LLM 的在线课程,我想和大家一起分享一下该门课程的一些主要内容。 下面是我们访问大型语言模(LLM)的主要代码: import openai#您的openai的api key openai.api_key YOUR-OPENAI-API-KEY def get_…

媒体邀约分步详解

传媒如春雨,润物细无声,大家好,我是51媒体网 胡老师。 邀请媒体参加活动的有哪些步骤: 活动落地执行:在整个活动方案中,邀请媒体来报道活动,往往会安排在整个活动的中期去做,因此在…

spring-boot集成spring-brick实现动态插件

spring-boot集成spring-brick实现动态插件 spring-boot集成spring-brick实现动态插件 项目结构 & 需求实现spring-boot集成spring-brick 环境说明1. 主程序集成spring-brick 第一步:引入相关依赖第二步:修改程序入口方法第三步:编写配置…

软件测试太卷了,我实在是做不到啊~

前言 本科计算机专业,做了四年软件测试工作,从一开始一脸懵的点点点,到现在会自动化测试了,浅谈一下计算机专业人员从事软件测试的一点点心得体会,仅供参考交流。 如果你本科学的是计算机专业,觉得开发那…