Ubuntu部署kafka集群

news2024/11/19 19:18:49

Apache Kafka (KRaft 集群)

Apache Kafka 是一个基于 TCP 的分布式流处理平台,提供高吞吐量、低延迟的消息传递和处理能力,用于构建实时数据管道和流应用程序。其底层通信依赖于 TCP Socket,但 Kafka 封装了许多高级特性,使其更加适合构建复杂的数据管道和流处理系统。

Kafka 在2.8版本之后,移除了对Zookeeper的依赖,将依赖于ZooKeeper的控制器改造成了基于Kafka Raft的Quorm控制器,因此可以在不使用ZooKeeper的情况下实现集群,本文讲解 Kafka KRaft 模式集群搭建。

本文使用三台服务器部署集群,192.168.3.191192.168.3.192192.168.3.193

  

kafka部署(Ubuntu)

三台服务器都需进行部署

更新包列表和安装依赖

Kafka依赖于Java,因此首先需要安装Java环境。

sudo apt update
sudo apt install openjdk-11-jdk -y

开放端口

kafka 需要开放 9092 端口和 9093 端口,3台机器上都需开放 9092 和 9093 端口。

  • 开放9092 端口
sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent
  • 开放9093 端口
sudo firewall-cmd --zone=public --add-port=9093/tcp --permanent
  • 更新防火墙规则(无需断开连接,动态添加规则)
sudo firewall-cmd --reload
  • 查看开放端口
sudo firewall-cmd --zone=public --list-ports

下载和解压Kafka

访问Apache Kafka下载页面,获取最新版本的下载链接。

注意需要使用预编译的Kafka二进制文件,而不是源文件(src)

本文我们下载的是kafka-3.6.2版本。

wget https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz
tar -xzf kafka_2.12-3.6.2.tgz
sudo mv kafka_2.12-3.6.2 /usr/local/kafka

配置kafka

进入配置目录:

cd /usr/local/kafka/config/kraft

编辑配置文件:

sudo vi server.properties

配置说明:

  • node.id :kafka的broker节点id。

  • controller.quorum.voters :配置的是 kafka 集群中的节点,kafka Controller的投票者配置,定义了一组Controller节点,其中包括它们各自的 id 和网络地址。

  • advertised.listeners :节点自己的监听地址。

在这里插入图片描述
1717119355943)

创建 KRaft 集群

生成集群id,在任意一个节点上执行就行,笔者使用 192.168.3.191 节点:

/usr/local/kafka/bin/kafka-storage.sh random-uuid

保存生成的字符串。

在这里插入图片描述

然后分别在3台机器上执行下面命令:

为方便执行命令,先回到 kafka安装目录

cd /usr/local/kafka

再执行命令,完成集群元数据配置

bin/kafka-storage.sh format -t [字符串] -c config/kraft/server.properties

在这里插入图片描述

启停Kafka

为方便执行命令,先回到 kafka安装目录:

cd /usr/local/kafka

启动kafka服务:

sudo bin/kafka-server-start.sh -daemon config/kraft/server.properties

验证Kafka是否启动成功,使用以下命令检查Kafka broker是否在监听端口9092:

netstat -tulnp | grep 9092

输出示例:

tcp6       0      0 :::9092                 :::*                    LISTEN      1234/java

如果没有看到类似的输出,可能是Kafka没有正确启动或端口配置有误。

启动失败时可尝试的解决方案和注意事项:

  • 方案:在server.properties 配置文件里面 找到 log.dirs 配置的路径,将该路径下的文件全部删除,重新创建KRaft集群,最后重启kafka。
  • 注意:在server.properties 配置文件里面 找到 node.id 选项,确保每个节点的id不冲突。
  • 注意:Controller中指定的那些节点,都要集群元数据配置后,再逐一启动kafka服务,否则启动失败。

停止kafka服务:

sudo bin/kafka-server-stop.sh

通信测试

可以通过 kafka-console-producer.shkafka-console-consumer.sh 两个kafka自带脚本进行测试。

创建测试主题:在任意一个服务器上创建一次,即可同步到集群

sudo /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092 --replication-factor 3 --partitions 1 --topic test-topic

列出主题:在集群上任意服务器上都可查看

sudo /usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092

应当看到test-topic,表示Kafka主题已经创建成功了。

生产消息: 使用 kafka-console-producer.shtest-topic 发送消息。

sudo /usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092 --topic test-topic

运行上述命令后,命令行会等待输入。在这里输入一些消息并按下回车发送,例如:

Hello, Kafka!
This is a test message.

消费消息: 使用 kafka-console-consumer.shtest-topic 消费消息,验证是否能够收到刚才发送的消息。

sudo /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.3.191:9092,192.168.3.192:9092,192.168.3.193:9092 --topic test-topic --from-beginning

如果 Kafka 集群搭建成功并且生产和消费消息正常,会在控制台上看到刚才发送的消息。

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

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

相关文章

Python使用动态代理的多元应用

Python作为一种功能强大且易于学习的编程语言,在网络编程领域具有广泛的应用。当Python与动态代理技术结合时,便开启了一扇通往更多可能性的大门。以下将深入探讨Python使用动态代理可以实现的多种应用。 首先,Python结合动态代理在网络爬虫…

ETLCloud中如何使用Kettle组件

ETLCloud中如何使用Kettle组件在当今数据驱动的时代,数据处理和分析已成为企业决策的关键。为了更高效地处理海量数据,ETL(Extract, Transform, Load)工具变得至关重要。而在众多ETL工具中,Kettle作为一款开源、灵活且…

学习笔记——网络参考模型——TCP/IP模型

二、TCP/IP模型 TCP/IP模型(TCP/IP协议栈):很多个互联网协议的集合,其中以TCP和IP为主,将这些协议的集合称为TCP/IP协议栈。目前使用最多的协议模型。 因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以…

C++候捷stl-视频笔记2

深度搜索list list是双向链表:底部实现是环状双向链表 list内部除了存data之外,还要存一个前向指针prev和一个后向指针next list的iterator,当迭代器的时候,是从一个节点走到下一个节点,是通过访问next指针实现的 主要…

arcgis api for javascript点击获取要素错乱的问题

今天帮同事看了一个前端地图点击的问题:点击时总会获取到周边的图元,即使我点击线的周围,也是能获取到的,除非离得特别远。 地图组件用的是arcgis api, 图层类是grahicslayer,要素类型是线。这是添加图元的代码: grap…

AIGC商业案例实操课,发觉其创造和商业的无限可能,Ai技术在行业应用新的商机

课程下载:https://download.csdn.net/download/m0_66047725/89307523 更多资源下载:关注我。 课程内容 1 AI为什么火 。写在课程前面的寄语 。AIGC标志性事件:太空歌剧院 。AI人工智能为什么这么火 ,AI人工智能发展历程 。聊天AI会取…

Vxe UI vxe-upload 上传组件,显示进度条的方法

vxe-upload 上传组件 查看官网 https://vxeui.com 显示进度条很简单,需要后台支持进度就可以了,后台实现逻辑具体可以百度,这里只介绍前端逻辑。 上传附件 相关参数说明,具体可以看文档: multiple 是否允许多选 li…

短剧系统源码:构建互动娱乐的新平台

随着数字媒体的兴起,短剧成为了一种新兴的娱乐形式,它以紧凑的叙事和快速的节奏迎合了现代观众的观看习惯。短剧系统源码的开发,为短剧内容的创作、传播和消费提供了一个全面的技术解决方案。本文将探讨短剧系统源码的关键组成部分及其功能。…

基于python flask+pyecharts实现的中药数据可视化大屏,实现基于Apriori算法的药品功效关系的关联规则

背景 在中医药学中,物品与功效之间的关联关系研究是一个非常重要的课题。传统中医药学中,很多药物都具有多种功效,而且不同药物对同一种疾病可能具有不同的疗效。因此,挖掘物品与功效之间的关联关系,可以帮助我们更加…

【第十二节】C++控制台版本贪吃蛇小游戏

目录 一、游戏简介 1.1 游戏概述 1.2 实现功能 1.3 开发环境 二、实现设计 2.1 C类的设计 2.2 项目结构 2.3 代码设计 三、程序运行截图 3.1 游戏界面 3.2 自定义地图 3.3 常规游戏界面 一、游戏简介 1.1 游戏概述 本游戏是一款基于C语言开发的控制台版本贪吃蛇游…

centos7 openssh9.7p 制作rpm包

centos7 openssh9.7p 制作rpm包 下载源码包:通过git开源打包源码准备编译打包环境编译打包上传rpm包到需要更新的服务器,并更新 下载源码包: 一般只用ssh源码就可以了 cd /root wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p…

一文了解企业版电子书:从认识到制作

现如今,电子书已经成为企业传播知识、展示品牌、吸引客户的重要工具了。那么,企业版电子书到底是什么?又该如何才能制作出有效的企业版电子书呢?接下来,跟着LookLook同学一起来看看如何从认识到制作一本企业版电子书。…

【计算机网络】——物理层(图文并茂)

物理层 一.物理层概述1.物理层要实现的功能2.物理层接口特征1.机械特性2.电气特性3.功能特性4.过程特性 二.物理层下面的传输媒体1.传输媒体的分类2.导向型传输媒体1.同轴电缆2.双绞线3.光纤 3.非导向型传输媒体1.无线电波2.微波3.红外线4.激光5.可见光 三.传输方式1.串行传输与…

select多个客户端连接,传输数据时只能顺序传输产生原因

1. 场景描述 即A先连接,B后连接&#xff0c;只能先A后B依次输入数据&#xff0c;服务端依次读取数据 这是因为进行循环遍历lfd之后的描述符时&#xff0c;没有判断文件描述符i是否在newset集合中 //cfd发生变化 for(int ilfd1;i<maxfd;i){printf("i num %d\t"…

推理和行动协同(Reason and Act,ReAct)和代码生成

文心一言 当我们将“推理和行动协同&#xff08;Reason and Act&#xff0c;ReAct&#xff09;”的概念应用于代码生成时&#xff0c;我们可以理解为一种指导原则或方法论&#xff0c;它强调了在代码生成过程中进行深思熟虑的决策&#xff08;Reason&#xff09;和有效执行&am…

单实例11.2.0.3迁移到RAC11.2.0.4_使用RMAN 异机恢复

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库小版本不同&#xff09;&#xff0c;源机器和目标机器部…

黑马微服务实用篇知识梳理

1、微服务治理 1.1服务注册与发现Eureka和Nacos a、nacos和eureka&#xff0c;二者都支持服务注册与发现&#xff0c;但nacos还包括了动态配置管理、服务健康监测、动态路由等功能&#xff0c;是更全面的服务管理平台 b、eureka需要独立部署为服务并运行&#xff0c;需要自行搭…

python根据版本下载外部库的.whl文件、python下载离线whl文件、python查找whl历史版本

文章目录 一、python下载外部库的.whl文件 当遇到pip源中没有对应的包&#xff0c;或者网络波动时&#xff0c;可能出现需要离线安装的方法。这里记录一下下载安装whl文件的操作。 一、python下载外部库的.whl文件 1、在浏览器输入https://pypi.org/进入PYPI官网 2、在弹出的…

CentOS7配置国内清华源并安装docker-ce以及配置docker加速

说明 由于国内访问国外的网站包括docker网站&#xff0c;由于种种的原因经常打不开&#xff0c;或无法访问&#xff0c;所以替换成国内的软件源和国内镜像就是非常必要的了&#xff0c;这里整理了我安装配置的基本的步骤。 国内的软件源有很多&#xff0c;这里选择清华源作为…

【PHP项目实战训练】——laravel框架的实战项目中可以做模板的增删查改功能(2)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…