Kafka 集群部署

目录

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.mzph.cn/news/627956.shtml

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

相关文章

代码随想录算法训练营第21天 | 530.二叉搜索树的最小绝对差 + 501.二叉搜索树中的众数 + 236.二叉树的最近公共祖先

今日任务 530.二叉搜索树的最小绝对差 - Easy 501.二叉搜索树中的众数 - Easy 236.二叉树的最近公共祖先 - Medium 530.二叉搜索树的最小绝对差 - Easy 题目链接:力扣-530. 二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root ,返回 树中任意两…

Postgres操作jsonb数据

Postgres操作jsonb数据 PostgreSQL 对 jsonb 类型的筛选查询可以使用 -> 或者 ->> 操作符。 -> 操作符用于通过 JSON 对象中的键来获取对应的值。 ->> 操作符可以将获取到的值转化为字符串类型。 1 查询 -- 数据准备 CREATE TABLE test (id SERIAL PRIMARY …

Vulnhub靶机:driftingblues 6

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:driftingblues6(10.0.2.22) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entr…

服务拆分及远程调用

分布式架构都离不开服务的拆分,微服务也是一样。 1.微服务拆分 不同微服务,不要重复开发相同业务 微服务数据独立,不要访问其它微服务的数据库 微服务可以将自己的业务暴露为接口,供其它微服务调用 2.远程调用 以前时&#xf…

1 python计算机基础

计算机基础和环境搭建 1 计算机基础和环境搭建1.计算机基础1.1 基本概念1.2 编程语言1.3 编译器/解释器 2.学习编程的本质3.Python的介绍3.1 语言的分类3.2 Python3.3 Python的解释器种类(了解)3.4 CPython解释器的版本 4.环境搭建4.1 安装Python解释器4…

关于C#中Monitor的wait/pulse的理解

wait:表示释放对象上的锁并阻止当前线程,直到它重新获取该锁。 pulse:表示通知等待队列中的线程锁定对象状态的更改。 当线程调用 Wait 时,它会释放对象上的锁并进入对象的等待队列。 对象的就绪队列中的下一个线程 (如果有一个…

Matlab交互式的局部放大图

在数据可视化中,很多时候需要对某一区间的数据进行局部放大,以获得对比度更高的可视化效果。下面利用 MATLAB 语言实现一个交互式的局部放大图绘制。 源码自行下载: 链接:https://pan.baidu.com/s/1yItVSinh6vU4ImlbZW6Deg?pwd9d…

《2023年度程序员收入报告》 :旧金山位居第一,北京程序员中位数超60万元

2024年刚刚拉开序幕,备受瞩目的程序员薪资调研报告再度登场。由知名数据采集平台levels.fyi 搜集并整理了《2023年全球程序员收入报告》,为我们揭示了程序员最新的收入情况,其中有哪些值得关注的亮点呢? 行情向好,大多…

burp靶场——XXE注入

XML 外部实体 (XXE) 注入 1. 什么是xxe漏洞: https://portswigger.net/web-security/xxe#what-is-xml-external-entity-injection XML 外部实体注入(也称为 XXE)是一种 Web 安全漏洞,允许攻击者干扰应用程序对 XML 数据的处理。…

GEE:机器学习分类中每个类别的概率图像可视化

作者:CSDN @ _养乐多_ 在 Google Earth Engine(GEE) 中应用机器学习分类器进行多分类时,有一个需求是想知道每个像素对于每个类别的分类概率。 比如在进行随机森林分类时,每个决策树会生成一个类别,通过投票选择票数最多的类别作为最终分类。除了最终分类结果,其他类别…

Pandas.DataFrame.groupby() 数据分组(数据透视、分类汇总) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.1.2 编写。 关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。 Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。 Pandas API参…

计算机组成原理 运输层

文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…

TensorRT模型优化部署 (八)--模型剪枝Pruning

系列文章目录 第一章 TensorRT优化部署(一)–TensorRT和ONNX基础 第二章 TensorRT优化部署(二)–剖析ONNX架构 第三章 TensorRT优化部署(三)–ONNX注册算子 第四章 TensorRT模型优化部署(四&am…

Go-安装与基础语法

TOC 1. Go 安装与环境变量 1.1 下载 需要从Go语言的官方网站下载适合你操作系统的Go语言安装包。Go语言支持多种操作系统,包括Windows、Linux和Mac OS。 对于Windows用户,下载.msi文件,然后双击该文件,按照提示进行安装即可。…

python的装饰器详解

目录 一:介绍 二:在方法中使用 三:在类中使用 四:python自带的装饰器 一:介绍 Python的装饰器是一种高阶函数,它允许你在不改变函数内部逻辑的情况下,给函数添加额外的功能。装饰器本质上是…

【C++进阶】心心念念的红黑树,它来了!

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

Spring框架是如何解决Bean创建过程中的循环依赖问题的

引言 本文主要梳理了Spring框架Bean创建过程中应对循环依赖问题的相关源码。我在手写super-mini-webpackhttps://blog.csdn.net/q1424966670/article/details/135628531?spm1001.2014.3001.5502的时候也介绍过解决循环依赖的算法:Map记忆化搜索。可以猜测这段源码…

ACL【新华三与华为的区别】

【解释】acl简单点解释就是,一套根据需求而设置的规则 【背景】 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段,要求使用基本 ACL 实现20_1 可以访问 20_6 的 TELNET 服务,但不能访问 FTP 服务 【操作步骤】 {易混点 }:1. …

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B

— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程:《使用 LangChain.js 构建 LLM 应用程序》 大家好,欢迎收看第六期机器学习周刊 本期介绍10个内容,涉及Python、机器学习、大模型等,目录如下&#xff…

Miracast手机高清投屏到电视(免费)

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Miracast概述 Miracast是一种无线显示标准,它允许支持Miracast的设备之间通过Wi-Fi直接共享音频和视频内容,实现屏幕镜像或扩展显示。这意味着你可以…