Kafka 集群部署

news2025/2/24 11:10:50

目录

1、环境准备

2、搭建ZooKeeper集群

配置文件

节点标记

环境变量

启动集群

数据同步测试

故障测试

3、搭建 Kafka 集群

配置文件

环境变量

配置其他机器

启动服务

4、集群测试

创建 Topic

显示 Topic 配置

创建 Producer

创建consumer

删除Topic

查看Zookeeper元数据


一个Broker就是一个kafka服务,三种安装Kafka的方式,分别为:单节点单Broker部署、单节点多Broker部署、集群部署(多节点多Broker)。实际生产环境中使用的是第三种方式,以集群的方式来部署Kafka。

1、环境准备

主机名

IP

应用

CentOS_JClouds

192.168.137.253

Kafka + ZooKeeper

CentOS_Book

192.168.137.252

Kafka + ZooKeeper

CentOS_Client01

192.168.137.6

Kafka + ZooKeeper

由于zookeeper依赖java环境,所以我们需要安装jdk,官网建议最低安装jdk 1.8版本

# 安装JDK
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/
# 配置环境变量
vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_171
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar 
export PATH JAVA_HOME CLASSPATH
source /etc/profile
2、搭建ZooKeeper集群
配置文件
# 解压安装装包
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/

# 创建内存数据库快照存放目录
mkdir -p /data/zk/data
mkdir -p /data/zk/datalog


# 修改配置文件
cd /usr/local/apache-zookeeper-3.7.1-bin/conf/
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg 
#----------------------------------zoo.cfg-------------------------------
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk/data        #修改这一行为我们创建的目录
dataLogDir=/data/zk/datalog   #添加这一行
clientPort=2181
# 三个节点配置,格式为:
# server.服务编号=服务地址、LF通信端口、选举端口
server.1=cong11:2888:3888
server.2=cong12:2888:3888
server.3=cong13:2888:3888
#----------------------------------zoo.cfg-------------------------------

注:server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

如果需要配置Observer,按照如下配置

peerType=observer
server.1=cong11:2888:3888:observer
server.2=cong12:2888:3888
server.3=cong13:2888:3888
节点标记

myid配置:在/data/zk/data设置myid, 这个myid的数字跟配置文件里面的server id对应

# JClouds
echo 1 > /data/zk/data/myid
# Book
echo 2 > /data/zk/data/myid
# Client01
echo 3 > /data/zk/data/myid
环境变量
vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.7.1-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
启动集群
# 启动三台机器zookeeper
zkServer.sh start

# 查看集群状态
zkServer.sh status

数据同步测试
# Clouds连接Zookeeper创建新的节点
create /testNode 123

故障测试

关掉JClouds(主)的ZooKeeper服务,其他节点选举为新的主,再将旧主(JClouds)重启

[root@JClouds local]# zkServer.sh stop

# 查看其他服务的状态
[root@Client01 conf]# zkServer.sh status

重新启动JClouds,查看服务状态

3、搭建 Kafka 集群
配置文件
# 解压软件包
tar -zxvf kafka_2.13-3.2.1.tgz -C /usr/local/

# 编辑配置文件
vim /usr/local/kafka_2.13-3.2.1/config/server.properties
#--------------------------------配置文件-------------------------------------------
# broker的全局唯一编号,不能重复
broker.id=0
# 监听
listeners=PLAINTEXT://:9092  #开启此项
# 日志目录
log.dirs=/data/kafka/log      #修改日志目录
# 配置zookeeper的连接(如果不是本机,需要该为ip或主机名)
zookeeper.connect=cong11:2181,cong12:2181,cong13:2181
#--------------------------------配置文件-------------------------------------------

# 创建日志目录
mkdir -p /data/kafka/log
环境变量
# 添加path环境变量
vim /etc/profile
export KAFKA_HOME=/usr/local/kafka_2.13-3.2.1
export PATH=$KAFKA_HOME/bin:$PATH
source /etc/profile
配置其他机器


# 拷贝kafka到其他机器
for i in 252 6;do scp -r /usr/local/kafka_2.13-3.2.1/ 192.168.137.$i:/usr/local/;done
# 拷贝profile
scp /etc/profile 192.168.137.252:/etc/profile
scp /etc/profile 192.168.137.6:/etc/profile
source /etc/profile

# 修改其他kafka的broker.id
[root@Book config]# sed -i 's/broker.id=0/broker.id=1/g' /usr/local/kafka_2.13-3.2.1/config/server.properties
[root@Client01 config]# sed -i 's/broker.id=0/broker.id=2/g' /usr/local/kafka_2.13-3.2.1/config/server.properties

# 创建日志目录
[root@Book ~]# mkdir -p /data/kafka/log
[root@Client01 ~]# mkdir -p /data/kafka/log
启动服务
# 后台启动服务
kafka-server-start.sh -daemon /usr/local/kafka_2.13-3.2.1/config/server.properties 

# 查看服务进程
jps -m

4、集群测试
创建 Topic
kafka-topics.sh --create --bootstrap-server JClouds:9092 replication-factor 2  --partitions 4 --topic test
  • --replication-factor:指定副本数量
  • --partitions:指定分区数量
  • --topic:主题名称
显示 Topic 配置
kafka-topics.sh --bootstrap-server JClouds:9092 --describe --topic test

  • leader:负责处理消息的读和写,leader是从所有节点中随机选择的.
  • replicas:列出了所有的副本节点,不管节点是否在服务中.
  • isr:是正在服务中的节点
# 列出指定的topic
kafka-topics.sh --bootstrap-server JClouds:9092 --list --topic test

# 列出所有的topic
kafka-topics.sh --bootstrap-server JClouds:9092 --list 
创建 Producer

在JClouds节点上测试产生者消息

[root@JClouds ~] kafka-console-producer.sh --broker-list JClouds:9092 --topic test

创建consumer

在Book节点上测试消费

kafka-console-consumer.sh --bootstrap-server JClouds:9092,Book:9092,Client01:9092 --topic test --from-beginning

删除Topic
kafka-topics.sh --delete --bootstrap-server JClouds:9092 --topic test
查看Zookeeper元数据
zkCli.sh

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

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

相关文章

【特征工程】分类变量:BinaryEncoder二进制编码方法详解

Binary Encoding:二进制编码方法详解 Binary Encoding是将每个整数表示为二进制数,然后按位拆分为多个二进制变量。这种方法旨在减少维度,同时避免了One-Hot Encoding的高维稀疏问题。 Binary encoding for categorical variables, similar …

bash shell基础命令(一)

1.shell启动 shell提供了对Linux系统的交互式访问,通常在用户登录终端时启动。系统启动的shell程序取决于用户账户的配置。 /etc/passwd/文件包含了所有用户的基本信息配置, $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash ...例如上述root账户信…

php反序列化漏洞基础

一、序列化 serialize(): 序列化是将对象或类转换为字符串的过程,以便在程序运行过程中对其进行持久化存储或传输的操作。在PHP中,序列化主要用于将类对象或数组转换成字节流的形式,以便于存储在磁盘或传输到其他系统。 通过序列化,可以将对象或类转换成一串字符串,然后可…

FFmpeg之SWScale

文章目录 一、概述二、函数调用结构图三、Libswscale处理数据流程四、重要结构体4.1、SwsContext4.2、SwsFilter 五、重要函数5.1、sws_getContext5.1.1、sws_alloc_context5.1.2、sws_init_context 5.2、sws_scale5.2.1、SwsContext中的swscale()5.2.2、check_image_pointers5…

外汇天眼:外汇交易无法出金?看这篇能提高维权成功率!

天眼君经常分享一些外汇维权成功的案例,但是我们都知道有些投资者在维权之路上并不是一帆风顺的,尤其是面对一些外汇资金盘或已经跑路的黑平台。在这种情况下,受害者需要紧握法律武器,以捍卫自己的权益,维护合法权利。…

AMP“双系统”加持,飞凌嵌入式RK3568核心板强实时性再升级

如果要选出飞凌嵌入式最热门的几款产品,FET3568-C系列核心板一定榜上有名。这款高性价比的全能型核心板上市两年来已赢得了数千家客户的青睐。飞凌嵌入式也在不断对它进行升级——从“配置新增”到“100%国产化认证”再到“新系统适配”,以满足更多行业客…

ubuntu设置每天定时关机

ubuntu设置每天定时关机 终端输入命令: sudo crontab -e输入密码,回车。 我这里使用nano作为编辑器,你可以选择vim。 在末尾输入以下命令: 59 23 * * * sudo -u root shutdown now设置:每天23:59分,电脑…

防微博 java web源代码

以下是我的防微博代码 源代码链接https://pan.baidu.com 提取码:5555 注意将这里的数据库用户名和数据库密码进行合适的修改。 关注并回复“防微博系统数据库”即可获取数据库。

【leetcode题解C++】707.设计链表 and 19.删除链表的倒数第N个结点

707.设计链表 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 prev 以指示链表…

通过ssh链接到群晖后台操作洗白

本篇适合二合一系统因各种原因不想进PE修改的 洗白进阶操作,需要对Linux的命令有基本的了解,如果完全不懂,建议不要按此方法操作,请看常规流程! 群晖洗白引导修复所用工具 请先提前下载解压缩好 下载地址https://ww…

数据库视图索引练习

学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (Sno, Cno, Score)…

Android 12.0 framework层实现app默认全屏显示

1.前言 在12.0的系统rom定制化开发中,在对于第三方app全屏显示的功能需求开发中,需要默认app全屏显示,针对这一个要求,就需要在系统启动app的过程中,在绘制app阶段就设置全屏属性,接下来就实现这个功能 效果图如下: 2.framework层实现app默认全屏显示的核心类 framewor…

C# wpf 获取控件刷新的时机

文章目录 前言一、为何要获取刷新时机?例子一、隐藏控件后截屏例子二、修改控件大小后做计算 二、如何实现?1.使用动画2.使用TaskCompletionSource 三、完整代码四、使用示例1、隐藏工具条截屏2、修改宽高后获取ActualWidth、ActualHeight 总结 前言 做…

LV.13 D10 Linux内核移植 学习笔记

具体实验步骤在lv13day10 实验十 一、Linux内核概述 1.1 内核与操作系统 内核 内核是一个操作系统的核心,提供了操作系统最基本的功能,是操作系统工作的基础,决定着整个系统的性能和稳定性 操作系统 操作系统是在内核的基础上添…

牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】

文章目录 前言牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】题目及类型思路思路1:大顶堆思路2:快排二分随机基准点 前言 博主所有博客文件目录索引:博客目录索引(持续更新) 牛客-寻找第K大、LeetCode215. 数组中的第K个最大元…

Spark SQL函数定义

目录 窗口函数 SQL函数分类 Spark原生自定义UDF函数 Pandas的UDF函数 Apache Arrow框架基本介绍 基于Arrow完成Pandas DataFrame和Spark DataFrame互转 基于Pandas完成UDF函数 自定义UDF函数 自定义UDAF函数 窗口函数 分析函数 over(partition by xxx order by xxx [as…

opencv_角点检测

文章内容 一个opencv检测角点的程序 运行效果 #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream>using namespace cv; using namespace std;void detectCorners(M…

定制键盘设计

方案1 stm32方案 参考 智辉君的键盘 方案2 沁恒方案 CH9328与ch9329区别&#xff1a;一个是单向&#xff0c;一个是双向。 ch9329是ch9328的升级款。 原理篇4、CH9328使用-CSDN博客https://blog.csdn.net/qq_44817843/article/details/112124822

服务器推送数据你还在用 WebSocket么?

当涉及到推送数据时,人们首先会想到 WebSocket。 的确,WebSocket 允许双向通信,可以自然地用于服务器到浏览器的消息推送。 然而,如果只需要单向的消息推送,HTTP 通过服务器发送的事件也有这种功能。 WebSocket 的通信过程如下: 首先,通过 HTTP 切换协议。服务器返回 101 状…

Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect

如果你想在一个脚本中同时使用bash和expect&#xff0c;你可以将expect部分嵌入到bash脚本中。以下是一个示例&#xff1a; #!/bin/bash# 设置MySQL服务器地址、端口、用户名和密码 MYSQL_HOST"localhost" MYSQL_PORT"3306" MYSQL_USER"your_usernam…