KafKa 集群【docker compose】
文章目录
- 主机准备
- 部署
- 编辑 docker-compose.yml
- controller
- broker
- 生成cluster_id
- 一篇完整的 docker-compose.yml 文件
- 查看集群状态
- 使用 kafka-ui 查看
- 拉取 kafka-ui
- 添加集群
- 查看集群状态
- 使用命令行查看
- 配置讲解
- controller
- broker
主机准备
IP | controller id | broker id |
---|---|---|
192.168.142.157 | 1 | 5 |
192.168.142.156 | 2 | 6 |
192.168.142.155 | 3 | 7 |
192.168.142.158 | 4 | 8 |
部署
创建文件夹
mkdir -p /docker/kafka/{data,data1,data2}
chmod 777 -R {data,data1,data2}
编辑 docker-compose.yml
controller
docker-compose.yml
services:controller:image: bitnami/kafka:3.8.0container_name: controllernetwork_mode: hostrestart: alwaysvolumes:- /docker/kafka/data:/data- /etc/localtime:/etc/localtime:roenvironment:KAFKA_CFG_NODE_ID: 1KAFKA_CFG_PROCESS_ROLES: controllerKAFKA_CFG_LISTENERS: CONTROLLER://192.168.142.157:9093KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXTKAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLERKAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@192.168.142.157:9093,2@192.168.142.156:9093,3@192.168.142.155:9093,4@192.168.142.158:9093KAFKA_CFG_GROUP_INITIAL_REBALANCE_DELAY_MS: 0KAFKA_CFG_LOG_DIRS: /data
broker
image: bitnami/kafka:3.8.0container_name: brokernetwork_mode: hostrestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- /docker/kafka/data1:/data1- /docker/kafka/data2:/data2environment:KAFKA_CFG_NODE_ID: 5KAFKA_CFG_PROCESS_ROLES: brokerKAFKA_CFG_LISTENERS: PLAINTEXT://192.168.142.157:9092KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://192.168.142.157:9092KAFKA_CFG_INTER_BROKER_LISTENER_NAME: PLAINTEXTKAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLERKAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXTKAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@192.168.142.157:9093,2@192.168.142.156:9093,3@192.168.142.155:9093,4@192.168.142.158:9093KAFKA_CFG_GROUP_INITIAL_REBALANCE_DELAY_MS: 0KAFKA_CFG_LOG_DIRS: "/data1,/data2"
所有的主机这一段基本都是一样的 只有 id 不同,id 可以根据上面表格进行修改
生成cluster_id
root@master:/docker/kafka# docker run -it --rm bitnami/kafka:3.8.0 kafka-storage.sh random-uuid
kafka 06:43:36.79 INFO ==>
kafka 06:43:36.80 INFO ==> Welcome to the Bitnami kafka container
kafka 06:43:36.80 INFO ==> Subscribe to project updates by watching https://github.com/bitnami/containers
kafka 06:43:36.80 INFO ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
kafka 06:43:36.80 INFO ==> Upgrade to Tanzu Application Catalog for production environments to access custom-configured and pre-packaged software components. Gain enhanced features, including Software Bill of Materials (SBOM), CVE scan result reports, and VEX documents. To learn more, visit https://bitnami.com/enterprise
kafka 06:43:36.80 INFO ==>PavLImfXSqaOOdrMgq1teA
拿到 id
PavLImfXSqaOOdrMgq1teA
新增到 docker-compose.yml 文件中
一篇完整的 docker-compose.yml 文件
services:controller:image: bitnami/kafka:3.8.0container_name: controllernetwork_mode: hostrestart: alwaysvolumes:- /docker/kafka/data:/data- /etc/localtime:/etc/localtime:roenvironment:KAFKA_CFG_NODE_ID: 1KAFKA_CFG_PROCESS_ROLES: controllerKAFKA_CFG_LISTENERS: CONTROLLER://192.168.142.157:9093KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXTKAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLERKAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@192.168.142.157:9093,2@192.168.142.156:9093,3@192.168.142.155:9093,4@192.168.142.158:9093KAFKA_CFG_GROUP_INITIAL_REBALANCE_DELAY_MS: 0KAFKA_CFG_LOG_DIRS: /dataKAFKA_KRAFT_CLUSTER_ID: PavLImfXSqaOOdrMgq1teAbroker:image: bitnami/kafka:3.8.0container_name: brokernetwork_mode: hostrestart: alwaysvolumes:- /etc/localtime:/etc/localtime:ro- /docker/kafka/data1:/data1- /docker/kafka/data2:/data2environment:KAFKA_CFG_NODE_ID: 5KAFKA_CFG_PROCESS_ROLES: brokerKAFKA_CFG_LISTENERS: PLAINTEXT://192.168.142.157:9092KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://192.168.142.157:9092KAFKA_CFG_INTER_BROKER_LISTENER_NAME: PLAINTEXTKAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLERKAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXTKAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 1@192.168.142.157:9093,2@192.168.142.156:9093,3@192.168.142.155:9093,4@192.168.142.158:9093KAFKA_CFG_GROUP_INITIAL_REBALANCE_DELAY_MS: 0KAFKA_CFG_LOG_DIRS: "/data1,/data2"KAFKA_KRAFT_CLUSTER_ID: PavLImfXSqaOOdrMgq1teA
启动
docker compose up -d
查看启动状态
docker ps -a | grep Up | wc -l
2
查看集群状态
使用 kafka-ui 查看
拉取 kafka-ui
只需要在一台主机上部署 ui 就可以了
docker run -d -p 8080:8080 -e DYNAMIC_CONFIG_ENABLED=true provectuslabs/kafka-ui:v0.7.1
通过 ip + 8080 端口访问
添加集群
查看集群状态
使用命令行查看
root@master:/docker/kafka# docker exec -it broker ./opt/bitnami/kafka/bin/kafka-metadata-quorum.sh --bootstrap-controller 192.168.142.157:9093,192.168.142.156:9093,192.168.142.155:9093,192.168.142.158:9093 describe --status
ClusterId: PavLImfXSqaOOdrMgq1teA
LeaderId: 1
LeaderEpoch: 22
HighWatermark: 7695
MaxFollowerLag: 0
MaxFollowerLagTimeMs: 0
CurrentVoters: [1,2,3,4]
CurrentObservers: [5,6,7,8]
到此集群搭建完成
配置讲解
controller
参数 | 解释 |
---|---|
KAFKA_CFG_NODE_ID | 节点 id |
KAFKA_CFG_PROCESS_ROLES | 节点角色 |
KAFKA_CFG_LISTENERS | 节点监听的 ip 和端口,并且标记为 controller |
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP | 定义不同监听器使用的加密协议 |
KAFKA_CFG_CONTROLLER_LISTENER_NAMES | 控制器(Controller)用于接收来自其他控制器节点和 broker 节点请求的监听器(Listener)的名称 |
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS | 添加集群节点 |
KAFKA_CFG_GROUP_INITIAL_REBALANCE_DELAY_MS | 当一个新的消费者加入到一个空的消费组时,协调者(Coordinator)将延迟多长时间再开始重新平衡(Rebalance)的过程 |
KAFKA_CFG_LOG_DIRS | 日志目录 |
KAFKA_KRAFT_CLUSTER_ID | 集群 id |
broker
参数 | 解释 |
---|---|
KAFKA_CFG_NODE_ID | 节点 id |
KAFKA_CFG_PROCESS_ROLES | 节点角色 |
KAFKA_CFG_LISTENERS | 节点监听的 ip 和端口,并且标记为 broker |
KAFKA_CFG_INTER_BROKER_LISTENER_NAME | 集群中 broker 之间通信所使用的监听器名称 |
KAFKA_CFG_CONTROLLER_LISTENER_NAMES | 监听器的名称 |
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP | 定义不同监听器使用的加密协议 |
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS | 添加集群节点 |
KAFKA_CFG_GROUP_INITIAL_REBALANCE_DELAY_MS | 当一个新的消费者加入到一个空的消费组时,协调者(Coordinator)将延迟多长时间再开始重新平衡(Rebalance)的过程 |
KAFKA_CFG_LOG_DIRS | 日志目录 |
KAFKA_KRAFT_CLUSTER_ID | 集群 id |
相关文章:

KafKa 集群【docker compose】
文章目录 主机准备部署编辑 docker-compose.ymlcontrollerbroker生成cluster_id 一篇完整的 docker-compose.yml 文件查看集群状态使用 kafka-ui 查看拉取 kafka-ui添加集群查看集群状态 使用命令行查看 配置讲解controllerbroker 主机准备 IPcontroller idbroker id192.168.1…...

【工具篇】MLU运行XInference部署手册
文章目录 前言一、平台环境准备二、代码下载三、安装部署1.正常pip 安装 四、运行结果展示1.如果界面404或没有东西请这样做2.运行效果 前言 Xorbits Inference(Xinference)是一个功能强大、用途广泛的库,旨在为语言、语音识别和多模态模型提…...

计算机网络:数据链路层 —— 扩展共享式以太网
文章目录 共享式以太网共享式以太网存在的问题在物理层扩展以太网扩展站点与集线器之间的距离扩展共享式以太网的覆盖范围和站点数量 在链路层扩展以太网网桥的主要结构网桥的基本工作原理透明网桥自学习和转发帧生成树协议STP 共享式以太网 共享式以太网是当今局域网中广泛采…...
平安养老险深圳分公司:创新养老服务,深入践行金融为民
党的二十届三中全会《决定》提出:“积极发展科技金融、绿色金融、普惠金融、养老金融、数字金融,加强对重大战略、重点领域、薄弱环节的优质金融服务。” 为经济社会发展提供高质量服务,更好满足人民日益增长的美好生活需要,金融…...

静态站点生成器哪家强?
有一种方法,让你写好文档后,快速地让同事、用户和合作伙伴看到,这就是静态站点生成器。 静态站点生成器是一种软件,用于创建不需要服务器端脚本的网站。这些网站由纯HTML文件组成,可能还包括CSS和JavaScript来增强功…...

从0开始部署优化虚拟机
一,vm workstation 安装 CentOS-7 忽略 二、查看虚拟机IP ip address 得到 192.168.196.128/24 宿主机进行Ping测试 C:\Users\Administrator>ping 192.168.196.128正在 Ping 192.168.196.128 具有 32 字节的数据: 来自 192.168.196.128 的回复: 字节32 时间…...

录屏有道, 四款必备录屏工具推荐!
制作教程视频、游戏直播或是远程会议记录等都需要录屏,那么到底应该怎么录屏呢?接下来就给大家介绍几个好用的录屏工具 Foxit REC 直达链接:www.foxitsoftware.cn/REC/ 操作教程:立即获取 Foxit REC以其强大的功能、简洁的界面…...

5G NR:UE初始接入信令流程浅介
UE初始接入信令流程 流程说明 用户设备(UE)向gNB-DU发送RRCSetupRequest消息。gNB-DU 包含 RRC 消息,如果 UE 被接纳,则在 INITIAL UL RRC MESSAGE TRANSFER 消息中包括为 UE 分配的低层配置,并将其传输到 gNB-CU。IN…...
探索 Spring AI:Java 开发者的 AI 应用开发新利器
在当今这个由人工智能驱动的时代,AI 技术正在以前所未有的速度改变着我们的工作和生活方式。对于 Java 开发者来说,将 AI 能力集成到他们的应用程序中,已经成为了一个迫切的需求。阿里云开源的 Spring AI Alibaba 框架,正是为了满…...

Linux历史
Linux 于 1991 年由芬兰学生 Linus Torvalds 作为个人项目开始,旨在创建一个新的免费操作系统内核。在其历史发展中,Linux 内核经历了持续的增长。自 1991 年首次发布源代码以来,Linux 内核从少量的 C 语言文件,且受限于禁止商业发…...
C++ 方法积累
std::numeric_limits<UInt32>::max()placement new 用于控制分配空间 PostingListInMemory * posting_list arena.alloc<PostingListInMemory>();new (posting_list) PostingListInMemory();/// placement new;PostingListInMemory & operator(const Posting…...

区块链-智能合约Solidity编程
文章目录 一、ubuntu安装二、FISCO BCOS安装五、 WeBASE安装5.1 WeBASE简介5.2 节点前置服务搭建5.3 调用HelloWorld合约 七、Solidity极简入门7.1. 值类型7.2. 变量数据存储和作用域7.3. 函数7.4 控制流7.5 数组&映射7.6 结构体7.7 修饰符7.8 事件7.9 面向对象7.10 抽象合…...

VS Code创建VUE项目(一)工具安装与项目创建
一.安装与配置npm 1.下载安装Node.js 安装Node.js 下载地址: Node.js — 在任何地方运行 JavaScript (nodejs.org)或下载 | Node.js 中文网 下载后一步步安装就好(安装过程基本一路直接“NEXT”就可以了,直到Finished)&#x…...

cudnn8编译caffe过程(保姆级图文全过程,涵盖各种报错及解决办法)
众所周知,caffe是个较老的框架,而且只支持到cudnn7,但是笔者在复现ds-slam过程中又必须编译caffe,我的cuda版本是11.4,最低只支持到8.2.4,故没办法,只能编译了 在此记录过程、报错及解决办法如下; 首先安装依赖: sudo apt-get install git sudo apt-get install lib…...

Docker安装Nginx
前提:Docker已安装好,本人使用的为自带docker的云服务器,docker常用命令已掌握,yjj为在根目录创建的一个文件夹,可自行修改对应的目录。 1、安装镜像,可去dockerhub上面找,一般都是组件名称。do…...
大数据治理:构建新时代数据生态的关键
摘要 随着信息技术的飞速发展和数字化浪潮的席卷,大数据已成为当今社会的核心资源。如何有效治理大数据,不仅关系到数据资源的利用效率,还对隐私保护、网络安全和社会秩序产生深远影响。本文深入探讨了大数据治理的概念、面临的挑战以及治理框架的构建,从技术、法律和伦理等…...
Leetcode 1223 LCA of Deepest TreeNode
题意,找到所有最深的叶子节点的LCA https://leetcode.com/problems/lowest-common-ancestor-of-deepest-leaves/description/ 第一个想法是模块的想法, LCA 找到所有最深的叶子节点两两组合 可行,但是算法复杂度很高而且你先要从顶到下,再从…...

C++从入门到起飞之——红黑树 全方位剖析!
🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1. 红⿊树的概念 2. 红⿊树的实现 2.1 构建整体框架 2.2 红黑树的插入 2.3 红黑树的验证 2.4 红黑树…...

Java基于SSM微信小程序物流仓库管理系统设计与实现(lw+数据库+讲解等)
选题背景 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…...

[LeetCode] 733. 图像渲染
题目描述: 有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行上色 填充 。 为了完成 上色工作: 从初始像素…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...