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 ) !

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70567.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot 概要(官網文檔解讀)

Spring Boot 概述 Spring Boot 是一個高效構建 Spring 生產級應用的腳手架工具,它簡化了基于 Spring 框架的開發過程。 Spring Boot 也是一個“構件組裝門戶”,何為構件組裝門戶呢?所謂的“構件組裝門戶”指的是一個對外提供的Web平臺&#x…

Linux 命令大全完整版(12)

Linux 命令大全 5. 文件管理命令 ln(link) 功能說明&#xff1a;連接文件或目錄。語  法&#xff1a;ln [-bdfinsv][-S <字尾備份字符串>][-V <備份方式>][--help][--version][源文件或目錄][目標文件或目錄] 或 ln [-bdfinsv][-S <字尾備份字符串>][-V…

遺傳算法初探

組成要素 編碼 分為二進制編碼、實數編碼和順序編碼 初始種群的產生 分為隨機方法、基于反向學習優化的種群產生。 基于反向學習優化的種群其思想是先隨機生成一個種群P(N)&#xff0c;然后按照反向學習方法生成新的種群OP(N),合并兩個種群&#xff0c;得到一個新的種群S(N…

【算法】堆

堆 heap&#xff0c;一棵完全二叉樹&#xff0c;使用數組實現的&#xff0c;但具備完全二叉樹的一些性質。一般總是滿足以下性質&#xff1a; 堆中某個節點的值總是不大于或不小于其父節點的值&#xff1b;堆總是一棵完全二叉樹。&#xff08;即除了最底層&#xff0c;其他層…

C/C++高性能Web開發框架全解析:2025技術選型指南

一、工業級框架深度解析&#xff08;附性能實測&#xff09; 1. Drogon v2.1&#xff1a;異步框架性能王者 核心架構&#xff1a; Reactor 非阻塞I/O線程池&#xff08;參考Nginx模型&#xff09; 協程實現&#xff1a;基于Boost.Coroutine2&#xff08;兼容C11&#xff09;…

使用PHP接入純真IP庫:實現IP地址地理位置查詢

引言 在日常開發中,我們經常需要根據用戶的IP地址獲取其地理位置信息,例如國家、省份、城市等。純真IP庫(QQWry)是一個常用的IP地址數據庫,提供了豐富的IP地址與地理位置的映射關系。本文將介紹如何使用PHP接入純真IP庫,并通過一個完整的案例演示如何實現IP地址的地理位…

Django ORM 的常用字段類型、外鍵關聯的跨表引用技巧,以及 `_` 和 `__` 的使用場景

一、Django ORM 常用字段類型 1. 基礎字段類型 字段類型說明示例CharField字符串字段&#xff0c;必須指定 max_lengthname models.CharField(max_length50)IntegerField整數字段age models.IntegerField()BooleanField布爾值字段is_active models.BooleanField()DateFiel…

java遞歸求自然數列的前n項和

概述 實現 /*** 數列 1 2 3 ... n ...* 遞歸求數列的前n項和* param n* return*/private static long calSum(long n){if (n1) return 1;else {return ncalSum(n-1); // 前n項的和 即第n項的值前n-1項的和}}測試用例 public static void main(String[] args) {long res1 cal…

【Golang 面試題】每日 3 題(六十五)

?個人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;專欄地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;專欄簡介&#xff1a;在這個專欄中&#xff0c;我將會分享 Golang 面試中常見的面試題給大家~ ??如果有收獲的話&#xff0c;歡迎點贊&#x1f44d;收藏…

16、Python面試題解析:python中的淺拷貝和深拷貝

在 Python 中&#xff0c;淺拷貝&#xff08;Shallow Copy&#xff09; 和 深拷貝&#xff08;Deep Copy&#xff09; 是處理對象復制的兩種重要機制&#xff0c;它們的區別主要體現在對嵌套對象的處理方式上。以下是詳細解析&#xff1a; 1. 淺拷貝&#xff08;Shallow Copy&a…

【Godot4.3】題目與答案解析合并器

免責申明 本文和工具截圖中涉及題庫和題目&#xff0c;均為本人自學使用&#xff0c;并未有商業和傳播企圖。如有侵害&#xff0c;聯系刪改。 概述 筆者本人醫學專業從業人員&#xff0c;編程只是業余愛好。在自己的專業應考學習過程當中&#xff1a; 有時候不太喜歡紙質題庫…

Lm studio本地部署DeepSeek

為什么用Lm studio Ollama官網下載過慢或失敗&#xff08;Lm默認下載源無法下載&#xff0c;但可以更換下載源&#xff09;Ollama默認安裝至C盤一部分Nivida顯卡無法吃滿顯存資源一部分AMD顯卡替換rocm文件后無法啟動 Lm studio安裝 官網下載&#xff1a;LM Studio - Discov…

基于Qlearning強化學習的2DoF機械臂運動控制系統matlab仿真

目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1 2DoF機械臂運動學模型 2.2 Q-learning強化學習算法原理 3.MATLAB核心程序 4.完整算法代碼文件獲得 1.算法仿真效果 matlab2022a仿真結果如下&#xff08;完整代碼運行后無水印&#xff09;&#xff1a; 仿真操作步驟可參…

Unity貼圖與模型相關知識

一、貼圖 1.貼圖的類型與形狀 貼圖類型 貼圖形狀 2.在Unity中可使用一張普通貼圖來生成對應的法線貼圖&#xff08;但并不規范&#xff09; 復制一張該貼圖將復制后的貼圖類型改為Normal Map 3.貼圖的sRGB與Alpha sRGB&#xff1a;勾選此選項代表此貼圖存儲于Gamma空間中…

快速上手 Unstructured:安裝、Docker部署及PDF文檔解析示例

1. 核心概念 1.1 Unstructured簡介 Unstructured 是一個強大的 Python 庫,專注于從非結構化數據中提取和預處理文本信息,廣泛應用于 PDF、Word 文檔、HTML 等多種格式的文件處理。其核心功能包括分區、清理、暫存和分塊,能夠將復雜的非結構化文檔轉換為結構化輸出,為后續…

pyecharts介紹

文章目錄 介紹安裝pyecharts基本使用全局配置選項 折線圖相關配置地圖模塊使用柱狀圖使用 介紹 echarts慮是個由百度開源的數據可視化&#xff0c;憑借著良好的交互性&#xff0c;精巧的圖表設計&#xff0c;得到了眾多開發者的認可&#xff0c;而Pyhon是門富有表達力的語言&a…

Fisher信息矩陣與Hessian矩陣:區別與聯系全解析

Fisher信息矩陣與Hessian矩陣&#xff1a;區別與聯系全解析 在統計學和機器學習中&#xff0c;Fisher信息矩陣&#xff08;FIM&#xff09;和Hessian矩陣是兩個經常出現的概念&#xff0c;它們都與“二階信息”有關&#xff0c;常用來描述函數的曲率或參數的敏感性。你可能聽說…

python與C系列語言的差異總結(1)

/ 表示浮點除法 // 表示整數除法 print(8/3)print(8//3)布爾型 False/True 首字母大寫 整數的大小是沒有限制的&#xff0c;會根據需要自動增長&#xff0c;僅受限于可用內存的大小。 m**n表示m的n次方 x 4.3 ** 2.4print(x)print(3.5e30 * 2.77e45)print(1000000001.0 *…

Python selenium 庫

Selenium 是一個用于自動化 Web 瀏覽器操作的強大工具&#xff0c;廣泛應用于 Web 應用程序測試、網頁數據抓取和任務自動化等場景。 Selenium 為各種編程語言提供了 API&#xff0c;用作測試。 目前的官方 API 文檔有 C#、JavaScript、Java、Python、Ruby。 安裝 Selenium 和…

vllm部署LLM(qwen2.5,llama,deepseek)

目錄 環境 qwen2.5-1.5b-instruct 模型下載 vllm 安裝 驗證安裝 vllm 啟動 查看當前模型列表 OpenAI Completions API&#xff08;文本生成&#xff09; OpenAI Chat Completions API&#xff08;chat 對話&#xff09; vllm 進程查看&#xff0c;kill llama3 deep…