(1)Linux搭建 zookeeper+kafka集群

news2024/11/24 5:28:51

因为之前公司业务都是使用mqtt接收数据,随着设备的增加,公司觉得用kafka集群来实现会更好 下面是我写一个demo 仅供参考

一、安装jdk

在这里插入图片描述
没有安装的可以百度去看看怎么安装的 不行的话在私聊我!!!!

二、搭建zookeeper集群

因为我只有一台Linux服务器,所以在一台机器上创建三个zk实例,通过设置不同的端口号,搭建一个zookeeper伪集群。

1、下载zookeeper安装包

地址:https://archive.apache.org/dist/zookeeper/,我这里下的是apache-zookeeper-3.6.3-bin.tar.gz版本。
在这里插入图片描述

2、新建一个zookeeper-cluster目录,将安装包上传到zookeeper-cluster目录下

  cd /usr/local/
  mkdir zookeeper-cluster

在这里插入图片描述

3、解压安装包

cd zookeeper-cluster/
tar -zxvf  apache-zookeeper-3.6.3-bin.tar.gz

你下载的是什么包名字就解压什么名字

4、配置zk1(先配一个节点,然后再复制两份修改相关配置)

改一下解压包名称(便于直观区分)

mv apache-zookeeper-3.6.3 zk1

新建data、logs目录,分别用来存放数据和日志

cd zk1/
mkdir data logs

执行完之后就会看到有 data 和logs 文件夹
在这里插入图片描述

进入conf,将zoo_sample.cfg 重命名为 zoo.cfg

cd conf/
cp zoo_sample.cfg /usr/local/zookeeper-cluster/zk1 #可以不执行
mv zoo_sample.cfg zoo.cfg

执行完之后就会看到有 zoo.cfg 可以先复制一份 zoo_sample.cfg zk1文件夹 修改完名称后面在复制进来文件夹里面 怕到时候配置错了 找不到原来的文件
在这里插入图片描述

修改conf下的zoo.cfg配置文件

vi zoo.cfg

① 修改:dataDir=/usr/local/zookeeper-cluster/zk1/data

② 添加:dataLogDir=/usr/local/zookeeper-cluster/zk1/logs

③ clientPort=2181【clientPort是客户端的请求端口】

④ 在zoo.cfg文件末尾追加【注意IP是内网IP,伪集群的话写127.0.0.1也可以】

server.1=172.17.80.219:2881:3881

server.2=172.17.80.219:2882:3882

server.3=172.17.80.219:2883:3883

解释:server.实例ID=实例IP:zk服务之间通信端口:zk服务之间投票选举端口;


在 zk1 的 data 目录下创建一个 myid 文件,内容为1

cd zk1/data/
echo 1 > myid

这一步一定要执行!!!

至此,zk1节点配置完成,我们复制两份zk2、zk3,再修改zk2、zk3的相关配置就可以了。

5、配置zk2

用zk1复制一份zk2

cd /usr/local/zookeeper-cluster/
cp -r zk1 zk2

修改zk2的zoo.conf文件

dataDir=/usr/local/zookeeper-cluster/zk2/data
dataLogDir=/usr/local/zookeeper-cluster/zk2/logs
clientPort=2182

在这里插入图片描述
修改zk2的data目录下的myid文件

cd /usr/local/zookeeper-cluster/zk2/data/
vi myid

将内容修改为2。

6、配置zk3

用zk1复制一份zk3

cd /usr/local/zookeeper-cluster/
cp -r zk1 zk3

修改zk3的zoo.conf文件

dataDir=/usr/local/zookeeper-cluster/zk3/data
dataLogDir=/usr/local/zookeeper-cluster/zk3/logs
clientPort=2183

修改zk3的data目录下的myid文件

 cd /usr/local/zookeeper-cluster/zk3/data/
 vi myid 

将内容修改为3。

7、开放防火墙端口

开放上面配置涉及到的端口:

2181/2182/2183、2881/2882/2883、3881/3882/3883

举例 开放端口

firewall-cmd --zone=public --add-port=2181/tcp --permanent

重启防火墙

firewall-cmd --reload

查看当前所有tcp端口

netstat -ntlp

8、启动集群

 cd  /usr/local/zookeeper-cluster/zk1/bin/
./zkServer.sh start
 
 cd  /usr/local/zookeeper-cluster/zk2/bin/
 ./zkServer.sh start
 
 cd  /usr/local/zookeeper-cluster/zk3/bin/
 ./zkServer.sh start

在这里插入图片描述

9、查看启动状态

 cd  /usr/local/zookeeper-cluster/zk1/bin/
 ./zkServer.sh status
 
 cd  /usr/local/zookeeper-cluster/zk2/bin/
 ./zkServer.sh status
 
 cd  /usr/local/zookeeper-cluster/zk3/bin/
 ./zkServer.sh status

在这里插入图片描述
可以看到,zk2作为leader,zk1和zk3作为follower,zookeeper集群搭建成功。

三、搭建kafka集群

1、下载安装包

kafka官网下载:http://kafka.apache.org/downloads
我下载的是 kafka_2.12-3.1.0.gz

2、新建一个kafka-cluster目录,将安装包上传到kafka-cluster目录下

cd /usr/local/
mkdir kafka-cluster

在这里插入图片描述

3、解压安装包,重命名

tar -zxvf kafka_2.12-3.1.0.gz
mv kafka_2.12-2.4.0 kafka1

4、修改配置文件

cd /usr/local/kafka-cluster/kafka1/config/
vi server.properties

※修改如下配置项

# 集群内不同实例的broker.id必须为不重复的数字
broker.id=0
# listeners配置kafka的host和port【同样使用内网IP】
listeners=PLAINTEXT://192.168.10.222:9092
# kafka数据和log的存放目录
log.dirs=/usr/local/kafka-cluster/kafka1/logs
# zookeeper集群的ip和端口,用英文逗号分隔
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
# 在配置文件中添加如下配置,表示允许删除topic
delete.topic.enable=true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、配置kafka2(将kafka1拷一份,修改相关配置)

cp -r kafka1 kafka2
cd kafka2/config/
vi server.properties

配置跟1一样 我就不截图了 你自己对比1的截图修改

broker.id=1
listeners=PLAINTEXT://127.0.0.1:9093
log.dirs=/usr/local/kafka-cluster/kafka2/logs
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
delete.topic.enable=true 

6、配置kafka3(将kafka1拷一份,修改相关配置)

 cp -r kafka1 kafka3
 cd kafka3/config/
 vi server.properties
broker.id=2
listeners=PLAINTEXT://127.0.0.1:9094
log.dirs=/usr/local/kafka-cluster/kafka3/logs
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
delete.topic.enable=true

7、启动kafka集群(分别启动各实例)

 cd /usr/local/kafka-cluster/kafka1/bin/                     
 ./kafka-server-start.sh ../config/server.properties 
 
 cd /usr/local/kafka-cluster/kafka2/bin/                     
 ./kafka-server-start.sh ../config/server.properties 
 
 cd /usr/local/kafka-cluster/kafka3/bin/                     
 ./kafka-server-start.sh ../config/server.properties 

在这里插入图片描述
开三个窗口 ,每个窗口执行一个kafka实例
可以发现在窗口启动之后是一个阻塞进程,会阻塞当前窗口,我们可以重新打开一个窗口进行接下来的操作,或者在启动kafka的时候使用 -daemon 参数将它声明为守护进程后台运行。

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

※ 启动的时候可能会报错"Cannot allocate memory"

./kafka-server-start.sh  ../config/server.properties 
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/kafka-cluster/kafka2/bin/hs_err_pid28697.log

这是因为单机上搭建伪集群内存不够导致的,我们可以修改启动脚本,将heap内存改小些,默认为1G,可以改为512M,如果还是不够再修改为256M。

 vi bin/kafka-server-start.sh

在这里插入图片描述
我没有报错过 所以你们报错了可以试试修改一下启动的shell脚本 按以上操作

8、开放防火墙端口

9092/9093/9094

怎么开放端口 上面有命令可以翻上去看看

9、通过命令简单体验一下kafka

创建一个topic,我们实现生产者向topic写数据,消费者从topic拿数据。

首先进入到bin目录下,
在打开一个新窗口

# cd /usr/local/kafka-cluster/kafka1/bin 

① 创建一个topic

 ./kafka-topics.sh --bootstrap-server 192.168.10.222:9092  --topic mytopic --create  --partitions 1 --replication-factor 2
 参数解释

192.168.10.222:9092 ZK的服务IP:端口号

 --partitions 1 分区数为1

 --topic mytopic  topic的名字是mytopic 

 --replication-factor 副本,注意,副本的个数应小于服务器总数,例如三台服务器做的kafka集群,那么副本数量最多只能为2,也就是 3 - 1 

在这里插入图片描述

这样就成功了

查询topics列表

./kafka-topics.sh --bootstrap-server 192.168.10.222:9092 --list
./kafka-topics.sh --bootstrap-serve 192.168.10.222:9092,192.168.10.222:9092 --list  

在这里插入图片描述
查看topic详情

./kafka-topics.sh --bootstrap-server 192.168.10.222:9092 --topic mytopic --describe

修改topic,将topic的分区数修改为3,注意“分区数只能增加不能减少。”

./kafka-topics.sh --bootstrap-server 192.168.10.222:9092 --topic mytopic --alter --partitions 3

删除topic

./kafka-topics.sh --bootstrap-server 192.168.10.222:9092 --topic mytopic --delete

在这里插入图片描述
生产消息

./kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.10.222:9092

第一次发送
在这里插入图片描述
第二次发送
在这里插入图片描述
消费消息

./kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.10.222:9092

第一次接收
在这里插入图片描述
第二次接收
在这里插入图片描述

在创建topic时指定的副本数不能大于可用的集群结点数。创建完成后,我们看一下logs目录,

# cd /usr/local/kafka-cluster/kafka2/logs/

可以看到,logs下有两个目录:mytopic-0、mytopic-1、mytopic-2,这就是我们创建的topic的三个分区(我们定义的分区副本是3,这是分区0和1,2的其中一个副本)

在这里插入图片描述

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

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

相关文章

【Python】用turtle绘制“混沌皮”

画的不好看,不喜勿喷。 目录 展示​ 设置界面 绘制全身 绘制眼睛 全部代码 展示 我用的是turtle绘制的,不会的可以看这篇文章:【Python】turtle库的介绍及使用(计算机二级常考)_刘佳皓_Leo的博客-CSDN博客_t…

肝了一周总结的SpringBoot常用注解大全,一目了然!

平时使用SpringBoot开发项目,少不了要使用到它的注解。这些注解让我们摆脱了繁琐的传统Spring XML配置,让我们开发项目更加高效,今天我们就来聊聊SpringBoot中常用的注解! SpringBoot实战电商项目mall(50kstar&#xf…

aardio工程实例——MIDI音乐盒(源码)

前段时间,aardio增强了midiOut库相关功能,我结合这个库写了个程序,一方面自娱自乐,同时也给新接触aardio的朋友做个参考。 主要界面: 奉送两个乐谱: 外婆的澎湖湾 ________, 晚风轻拂澎湖湾 3,__,5,__,5,_…

车载以太网DoIP测试专栏 - 总纲

本专栏的目的:无论你是刚入行的小白还是对DoIP有一定工作经验的从业人员,保证在你完成这块的讲解后,首先让你了解DoIP要测试哪些?再者为何要测试这些是否还有更多的内容需要去测试,最后如何实现DoIP协议的测试&#xf…

智能制造工业互联简述

智能制造系统架构通过生命周期、系统层级和智能功能三个维度构建完成,主要解决智能制造标准体系结构和框架的建模研究 生命周期是由设计、生产、物流、销售、服务等一系列相互联系的价值创造活动组成的链式集合。生命周期中各项活动相互关联、相互影响。不同行业的生…

构造函数、原型和实例的关系

构造函数、原型和实例的关系: 每个构造函数都有一个原型对象,原型有一个属性指回构造函数,而实例有一个内部指针指向原型。如果原型是另一个类型的实例呢?那就意味着这个原型本身有一个内部指针指向另一个原型,相应地另…

[附源码]计算机毕业设计Python第三方游戏零售平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

Unity实战篇 |Unity 打包exe 实现隐藏窗口标题栏、隐藏最小化最大化关闭按钮

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

【疾病分类】模糊逻辑分类叶病严重程度分级系统【含GUI Matlab源码 194期】

⛄一、模糊逻辑(Fuzzy Logic)简介 理论知识参考:模糊逻辑(Fuzzy Logic) ⛄二、部分源代码 function varargout LeafDiseaseGradingSystemGUI(varargin) % LeafDiseaseGradingSystemGUI MATLAB code for LeafDiseaseGradingSystemGUI.fig % LeafDiseaseGradingSy…

云原生 | go-micro@v4.9.0源码解析(建议收藏)

go-microv4.9.0源码阅读一、前言二、创建微服务三、源码阅读操作一:注册服务处理操作二:组件配置操作三:启动微服务Step 1 :启动微服务Step 2 :开启服务关闭监听Step 3 :停⽌Server组件Step 4 :…

毕业设计 基于java web的网上零食销售系统的设计与实现

文章目录前言一、项目设计1. 模块设计功能分析前台功能后台功能2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 web项目: 基于java web的网上零食销售系统的设计与实现 一、项目设计 1. 模块设计 功能分析 经过对时下大型电商网站的调查,对该系统…

计算机毕业设计 SSM与Vue的垃圾分类系统(源码+论文)

文章目录1 项目简介2 实现效果2.1 界面展示3 设计方案3.1 概述3.2 系统流程3.2.1 系统开发流程3.2.2 登录流程3.3 系统结构设计4 最后1 项目简介 Hi,各位同学好呀,这里是M学姐! 今天向大家分享一个今年(2022)最新完成的毕业设计项目作品&am…

学人工智能好找工作吗 ?Python就业前景怎么样?

学人工智能好找工作吗?Python就业前景怎么样?人工智能前景很好,中国正在产业升级,工业机器人和人工智能方面都会是热点,而且正好是学习的好时机。但是,也有一个问题大家要注意: 学习的难度比较高…

[附源码]Python计算机毕业设计Django智能衣橱APP

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

数据类型相关笔记

C、C、java强调类型&#xff1b; JavaScript、python、php不看重类型&#xff0c;甚至不需要事先定义。 类型 ○ 整数 ○ 浮点数 ○ 逻辑 ○ 指针 ○ 自定义类型 sizeof 查看所占字节 给出某个类型或变量在内存中所占据的字节数 # include <stdio.h>int main(void) …

怎么把avi转成mp4格式?

怎么把avi转成mp4格式&#xff1f;这是最近大家问的比较频繁的一个问题&#xff0c;avi是一种音频视频的交错格式&#xff0c;可以极大的压缩视频文件本身所占用的内存空间&#xff0c;但是同时引起的负面缺点是使视频画质受损&#xff0c;所以大家在遇到avi格式视频时。可以转…

编程明明是程序员的工作,关学生什么事?

写在前面&#xff1a; 我手里这个魔方&#xff0c;任何一个人都可以轻松地把它打乱&#xff0c;但要想把它复原&#xff0c;就不是每个人都能做到的了。我会还原魔方&#xff0c;而你不会&#xff0c;这能不能说明我比你聪明呢&#xff1f;并不能。 还原一个三阶魔方是有特定的…

12基于储能电站服务的冷热电多微网系统双层优化配置(matlab程序)

参考文献 基于储能电站服务的冷热电多微网系统双层优化配置——吴盛军&#xff08;2020电网技术&#xff09; 主要内容 分析共享储能电站的运行方式和盈利机制。将储能电站服务应用到冷热电联供型多微网系统中&#xff0c;建立考虑两个不同时间尺度问题的双层规划模型&#…

pyTorch入门(四)——导出Minist模型,C++ OpenCV DNN进行识别

学更好的别人&#xff0c;做更好的自己。——《微卡智享》本文长度为2548字&#xff0c;预计阅读8分钟前言前三章介绍了pyTorch训练的相关&#xff0c;我们也保存模型成功了&#xff0c;今天这篇就是使用C OpenCV的DNN模块进行手写图片的推理。实现效果导出的推理模型使用的是M…

基于JSP数码产品交易

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;网站介绍、帮助信息、数码资讯、数码产品、讨论信息 管理员功能&#xff1a; 1、管理网站介绍、帮…