kafka-集群缩容

一. 简述:

     当业务增加时,服务瓶颈,我们需要进行扩容。当业务量下降时,为成本考虑。自然也会涉及到缩容。假设集群有 15 台机器,预计缩到 10 台机器,那么需要做 5 次缩容操作,每次将一个节点下线,那么现在问题就是如何正确、安全地从 Kafka 集群中移除一台 broker?搞定这个之后,重复 5 次即可(也可以根据实际情况,一次多台)。

     一个 broker 下线,它上面的所有 partition 都会处于副本不足的状态,并且 Kafka 集群不会在其它的 broker 上生成这些副本,因此,在将一个 broker 从集群中移除之前,需要将这个 broker 上的 partition 副本都转移到最终会保留的 10 台机器上,怎么实现这个呢?Kafka 自带的分区重分配工具。

    在集群数据量较大的情况下,分区的转移可能会花费较长时间,那么在转移过程中最好不要创建新 topic,不然新的 topic 有可能又创建到要被移除的 broker 上,当然如果实在无法避免的话,可以再对新的 topic 进行一次额外的转移。

二. 缩容步骤:

    需要先获取所有 broker 的 broker id,选择待移除的 broker。 使用 kafka-reassign-partitions 脚本将待移除 broker 上的 partition 均匀地转移到最终会留在集群的 broker 上。确认待移除 broker 上没有任何 partition 之后,在 对这个 broker 进行停止和删除。其中重点是 partition 的转移或者说重分配。

  1. 获取brokerID :

     可以通过管理工具,或者命令行,配置文件,都可以。 命令行的话:

./kafka-broker-api-versions.sh --bootstrap-server localhost:9092

  工具的话,cmak : 

   可以看到 broker list,broker id 分别为 141,142,145,146 .... 

 2.  确定topic 数据量大小。

      在重分区过程中,很耗节点资源的(cpu,内存,IO),所以如果数据量大,需要按批次进行多次操作。如果没有监控指标的话, 可以通过配置文件中,log.dir查看具体数据路径。通过指令(du -sh )判断topic的数据存储大小。

3.  重分区 (和扩容方式一样,也可以参考: kafka-集群扩容-CSDN博客 ): 

 将涉及到的topic,以json方式,写入临时文件:

{
  "version": 1,
  "topics": [
    {
      "topic": "topic1"
    },
    {
      "topic": "topic2"
    },
    ...
  ]
}

获取当前 partition 分配方案

使用 kafka-reassign-partitions 脚本的 --generate 来获取当前的 partition 分配方案。 

# bin/kafka-reassign-partitions.sh --bootstrap-server logkafka-1:9092 --topics-to-move-json-file topics-to-move.json --broker-list "141,142,143。。。" --generate
 

将新的分配规则保存在json文件(例如,保存在 reassignment.json这个文件下)然后,用--execute选项来执行它:

bin/kafka-reassign-partitions.sh --bootstrap-server logkafka-1:9092 --reassignment-json-file reassignment.json --execute
 

可通过--verify 参数查看进度。 

4.  观察没问题后,直接下线空数据节点即可。

  ----------------------------------------------------------------------------------------------

深耕运维行业多年,擅长linux、容器云原生、运维自动化等方面。
承接各类运维环境部署、方案设计/实施、服务代运维工作,欢迎沟通交流!

(V: xiaoxiangbj2013 ) !

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek 提示词:定义、作用、分类与设计原则

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(3)

Paimon的下载及安装,并且了解了主键表的引擎以及changelog-producer的含义参考: 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 利用Paimon表做lookup join,集成mysql cdc等参考: 大数据组件(四)快速入门实时数据…

blender笔记2

一、物体贴地 物体->变换->对齐物体 ->对齐弹窗(对齐模式:反方,相对于:场景原点,对齐:z)。 之后可以设置原点->原点--3d游标 二、面上有阴影 在编辑模式下操作过后,物体面有阴影。 数据-&g…

MinkowskiEngine安装(CUDA11.8+torch2.0.1+RTX4070TI)

1、背景 1)因为项目要用这个库:MinkowskiEngine,Minkowski Engine — MinkowskiEngine 0.5.3 documentation 然后就用了之前安装好 MinkowskiEngine 的torch1.8.1,cuda11.1的环境。 2)自己的代码出现cuda不支持torch用gpu进行矩…

【Blender】二、建模篇--05,阵列修改器与晶格形变

阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…

华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)

文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下: 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件(Firmware&#xff0…

2024电子取证“獬豸杯”WP

简介: 竞赛为个人赛,工具自备,只发证书(还没用,公告这么写的哈)竞赛选手们将对模拟的案件进行电子数据调查取证,全面检验参赛选手电子数据取证的综合素质和能力。 检材链接: 百度网盘…

GESP2024年3月认证C++七级( 第三部分编程题(1)交流问题)

参考程序&#xff1a; #include <iostream> #include <vector> #include <unordered_map> using namespace std;// 深度优先搜索&#xff0c;给每个节点染色&#xff0c;交替染色以模拟两校同学的划分 void dfs(vector<vector<int>>& graph…

Spring Boot框架总结(超级详细)

前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等&#xff0c;如果能耐心看完&#xff0c;想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念&#xff1a; 约定优于配置&#…

Blaze RangePartitioning 算子Native实现全解析

引言&#xff1a;本文将全面且深入地解析Blaze RangePartitioning算子的Native实现过程。相较于原生Spark&#xff0c;RangePartitioning的Native实现在执行时间上达到了30%的显著下降&#xff0c;同时在资源开销方面节省了高达76%。这一改进大幅降低了运行成本&#xff0c;展现…

|网络安全|网络安全学习方法

1、先网络后安全 很多初学者还没搞定网络看懂网络拓扑&#xff0c;就急着研究防火墙或VPN&#xff0c;其实这样就不清楚整个网络架构是如何安全演进的。正确的流程是&#xff1a;先通过网络协议和拓扑设计的学习&#xff0c;能独立搭建一个企业网/校园网&#xff0c;再引入局域…

关于酒店旅游信息的数据采集API接口返回||包含参数说明

相关网站站点 xiecheng API 接入说明 携程获取酒店详情原数据 API返回值说明 item_get_app-获取酒店详情原数据 xiecheng.item_get_app 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameStrin…

【.NET全栈】.NET包含的所有技术

文章目录 前言一、基础框架与语言1、.NET Framework2、编程语言 二、Web开发技术1、ASP.NET2、Blazor3、SignalR 三、桌面与移动开发技术1、Windows Forms&#xff08;WinForms&#xff09;2、Windows Presentation Foundation&#xff08;WPF&#xff09;3、Xamarin4、.NET MA…

深度理解多态的底层实现

前言 首先先回顾一下上次的知识 一、多态的概念 多态(polymorphism)的概念&#xff1a;通俗来说&#xff0c;就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态)&#xff0c;这⾥我们重点讲运⾏时多态&#xff0c;编译时多态(静态多态)和运⾏时多态(动态多态…

python中的异常-模块-包

文章目录 异常异常的定义异常捕获语法捕获常规异常捕获指定异常捕获多个异常捕获所有异常异常else异常finally 异常传递总结 模块概念导入自定义模块及导入main方法all变量 总结 包自定义包定义pycharm中建包的基本步骤导入方式 第三方包 异常 异常的定义 当检测到一个错误时…

亲测Windows部署Ollama+WebUI可视化

一. Ollama下载 登录Ollama官网(Ollama)点击Download进行下载 如果下载很慢可用以下地址下载&#xff1a; https://github.com/ollama/ollama/releases/download/v0.5.7/OllamaSetup.exe 在DeepSeek官网上&#xff0c;你可以直接点击【model】 到达这个界面之后&#xff0c;…

ios UICollectionView使用自定义UICollectionViewCell

和UITableView用法类似&#xff0c;UITableView主要是显示按行排列的数据&#xff0c;UICollectionView则用在显示多行多列的数据&#xff0c;今天我们继续来实现app下载页面的效果。 1.先自定义UICollectionViewCell&#xff0c;一个cell就相当于列表中的一项了。 记得勾上&a…

【个人开源】——从零开始在高通手机上部署sd(二)

代码&#xff1a;https://github.com/chenjun2hao/qualcomm.ai 推理耗时统计 单位/ms 硬件qnncpu_clipqnncpu_unetqnncpu_vaehtp_cliphtp_unethtp_vae骁龙8 gen124716.994133440.39723.215411.097696.327 1. 下载依赖 下载opencv_x64.tar,提取码: rrbp下载opencv_aarch64.t…

R 语言科研绘图第 27 期 --- 密度图-分组

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…