docker-compose 安装kafka集群

news2024/9/29 9:25:34

点击关注《golang技术实验室》公众号****,将****获取更多干货

介绍

Kafka是一种高性能的分布式流处理平台,它的集群工作原理如下:

假设你是一个快递员,Kafka集群就是一个快递中转站。在这个中转站中,有很多个小窗口(Broker),每个窗口有一个工作人员(Broker)负责接收和分发快递。

    • 发送快递(Producer):你的工作是将快递从不同的地方收集起来,然后送到中转站的一个窗口。你可以一次送多个快递,每个快递都有一个编号(消息的键),内容(消息的值)和地址(主题)。你将这些快递递给窗口工作人员。
    • 中转站(Broker):窗口工作人员负责接收你送来的快递,并将它们存放在中转站中。这些快递被存放在不同的箱子中,每个箱子都有一个编号(分区)。中转站会确保快递的安全存储,并且可以将快递复制到其他窗口(副本)中,以防止数据丢失。
    • 消费快递(Consumer):有些人(消费者)来到中转站,希望取走他们关心的快递。他们告诉窗口工作人员他们关心的快递的编号和地址,窗口工作人员会告诉他们快递在哪个箱子(分区)中,并将快递递给他们。消费者可以按照自己的节奏和需要来取走快递。
    • 管理和协调(ZooKeeper):中转站还有一个管理员(ZooKeeper),负责监控中转站的状态,并管理分区和消费者的信息。管理员会确保每个窗口工作正常,箱子(分区)均匀分布,以及消费者获取快递的正确信息。总结起来,Kafka集群的工作原理就是:生产者将消息送到中转站的窗口,窗口工作人员将消息存放在不同的箱子(分区)中,消费者可以根据自己的需求取走他们关心的消息。管理员负责管理和协调整个中转站的运作。这样的设计使得Kafka集群具有高吞吐量、低延迟和高可靠性的特点,非常适合处理大规模的实时数据流。

部署

这边kafka集群基于docker部署,所以要先安装docker

IP角色备注
192.168.2.210kafka-01
192.168.2.211kafka-02
192.168.2.212kafka-03

安装docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose    
chmod +x /usr/local/bin/docker-compose
docker-compose version   # 查看版本信

安装docker

yum -y install yum-utils
yum-config-manager \  --add-repo \  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker

安装zookeeper集群

在每台机器上安装一个zookeeper和一个kafka组成整体的集群。.

进入三台服务器,创建目录/data/local/zk,并创建zk.yml文件

mkdir -p /data/local/kafka/zk/data/ && chmod -R 777  /data/local/kafka/zk/data/
cd /data/local/kafka/zk
touch zk.yml

zk.yml是docker-compose的编排文件,三台服务器的zk.yml文件内容分别如下:

192.168.2.210中的zk.yml

version: '3.1'
services:
  zk1:
    image: 'zookeeper:3.7'
    restart: always
    hostname: zoo1
    container_name: zk1
    network_mode: host
    ports:
      - 2181:2181
      - 2888:2888
      - 3888:3888
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=192.168.2.210:2888:3888;2181 server.2=192.168.2.211:2888:3888;2181 server.3=192.168.2.212:2888:3888;2181
    volumes:
      - /data/local/kafka/zk/data:/data

192.168.2.211中的zk.yml

version: '3.1'
services:
  zk2:
    image: 'zookeeper:3.7'
    restart: always
    hostname: zoo2
    container_name: zk2
    network_mode: host
    ports:
      - 2181:2181
      - 2888:2888
      - 3888:3888
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=192.168.2.210:2888:3888;2181 server.2=192.168.2.211:2888:3888;2181 server.3=192.168.2.212:2888:3888;2181
    volumes:
      - /data/local/kafka/zk/data:/data

192.168.2.212中的zk.yml

version: '3.1'
services:
  zk1:
    image: 'zookeeper:3.7'
    restart: always
    hostname: zoo3
    container_name: zk3
    network_mode: host
    ports:
      - 2181:2181
      - 2888:2888
      - 3888:3888
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=192.168.2.210:2888:3888;2181 server.2=192.168.2.211:2888:3888;2181 server.3=192.168.2.212:2888:3888;2181
    volumes:
      - /data/local/kafka/zk/data:/data

分别在三台机器的/data/local/zk目录下执行以下命令,开启zk集群

docker-compose -f zk.yml up -d

进入容器内部查看是否启动成功:

docker exec -it zk1 bash
zkServer.sh status

docker exec -it zk2 bash
zkServer.sh status

docker exec -it zk3 bash
zkServer.sh status

如果启动成功,可以看到如下内容:

图片

至此,一个部署在三台服务器上的3节点zookeeper集群就搭建成功了。

安装kafka集群

进入三台服务器,创建目录/data/local/kafka,并创建zk.yml文件

mkdir -p /data/local/kafka/kafka/data/ && chmod -R 777  /data/local/kafka/kafka/data/
cd /data/local/kafka/kafka
touch kafka.yml

kafka.yml是docker-compose的编排文件,三台服务器的kafka.yml文件内容分别如下:

192.168.2.210中的kafka.yml

version: '2'
services:
  k1:
    image: 'bitnami/kafka:3.2.0'
    restart: always
    container_name: k1
    network_mode: host
    ports:
      - 9092:9092
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.2.210:2181,192.168.2.211:2181,192.168.2.212:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_BROKER_ID=1
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.210:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_CFG_NUM_PARTITIONS=3
      - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
    volumes:
      - /data/local/kafka/kafka/data:/bitnami/kafka/data

192.168.2.211中的kafka.yml

version: '2'
services:
  k1:
    image: 'bitnami/kafka:3.2.0'
    restart: always
    container_name: k2
    network_mode: host
    ports:
      - 9092:9092
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.2.210:2181,192.168.2.211:2181,192.168.2.212:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_BROKER_ID=1
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.211:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_CFG_NUM_PARTITIONS=3
      - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
    volumes:
      - /data/local/kafka/kafka/data:/bitnami/kafka/data

192.168.2.212中的kafka.yml

version: '2'
services:
  k1:
    image: 'bitnami/kafka:3.2.0'
    restart: always
    container_name: k3
    network_mode: host
    ports:
      - 9092:9092
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.2.210:2181,192.168.2.211:2181,192.168.2.212:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_BROKER_ID=1
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.2.212:9092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_CFG_NUM_PARTITIONS=3
      - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
    volumes:
      - /data/local/kafka/kafka/data:/bitnami/kafka/data

分别在三台机器的/data/local/kafka目录下执行以下命令,开启kafka集群

docker-compose -f kafka.yml up -d

创建topic并验证消费者和生产者,进入192.168.2.210的kafka容器内部

docker exec -it k1 bash
cd /opt/bitnami/kafka/bin
./kafka-topics.sh --create --bootstrap-server 192.168.2.210:9092 --replication-factor 1 --partitions 3 --topic devops11

进入其他机器的kafka容器内部,查看是否存在刚创建的topic,如果存在则说明Kafka集群搭建成功。

docker exec -it k2 bash
kafka-topics.sh --list --bootstrap-server 192.168.2.211:9092
docker exec -it k3 bash
kafka-topics.sh --list --bootstrap-server 192.168.1.212:9092

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

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

相关文章

基于TF-IDF+TensorFlow+词云+LDA 新闻自动文摘推荐系统—深度学习算法应用(含ipynb源码)+训练数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境TensorFlow环境方法一方法二 模块实现1. 数据预处理1)导入数据2)数据清洗3)统计词频 2. 词云构建3. 关键词提取4. 语音播报5. LDA主题模型6. 模型构建 系统测试工程源代码下载…

分布式 - 消息队列Kafka:Kafka生产者发送消息流程和3种方式

文章目录 1. Kafka 生产者2. kafaka 命令行操作3. Kafka 生产者发送消息流程4. Kafka 生产者发送消息的3种方式1. 发送即忘记2. 同步发送3. 异步发送 5. Kafka 消息对象 ProducerRecord 1. Kafka 生产者 Kafka 生产者是指使用 Apache Kafka 消息系统的应用程序,它们…

wsl(在windows中使用呢linux系统)适用于windows的linux子系统

步骤可参考微软官方文档https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package 在这里主要列举一些需要注意的点 wsl2的要求 一定要检查下windows版本,版本不对的先升级版本不然无法使用wsl2 wsl支持…

P4381 [IOI2008] Island (求基环树直径)

也许更好的阅读体验 D e s c r i p t i o n \mathcal{Description} Description 给一个基环树森林,求每棵树的直径的和,基环树的直径定义为,从一个点出发只能走到没走过的点(即一个环不能把所有边都选),所经…

史上最细,自动化测试-logging日志采集详细实战(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、测试场景 给登…

固态硬盘数据恢复方法有哪些?三种恢复方法助您解忧

近年来固态硬盘比较流行,因为工作的需要我也在使用固态硬盘,它真的给我带来了很多的方便。但是最近,我固态硬盘里的文件有些不知道怎么就丢失了,这给我带来了很大的困扰。有什么方法可以找回来吗? 固态硬盘&#xff08…

Netty客户端同步获取结果

上次服务间通信是异步的&#xff0c;现在想实现客户端同步拿到服务端响应结果。实现如下&#xff1a; 在NettyClientHandler类中增加一个结果缓存器 Map<Long,Protocol<ResponseMsg>> resultMap new ConcurrentHashMap<>();修改方法 Override protected vo…

【文献阅读笔记】深度异常检测模型

文章目录 导读相关关键词及其英文描述记录深度异常检测模型Supervised deep anomaly detection 有监督深度异常检测Semi-Supervised deep anomaly detection 半监督深度异常检测Hybrid deep anomaly detection 混合深度异常检测One-class neural network for anomaly detection…

VR全景的盈利模式你知道吗?VR全景能用在哪些领域?

引言&#xff1a; 随着科技的迅猛发展&#xff0c;虚拟现实技术已经逐渐走进我们的生活。这项令人惊叹的技术让我们能够穿越时间与空间的限制&#xff0c;重新定义人们与世界互动的方式。 一&#xff0e;什么是VR全景&#xff1f; VR全景&#xff0c;是一种通过虚拟现实技术&…

万应低代码受邀参加上海电信“大干一场 科创沙龙”活动

7月28日&#xff0c;由上海市宝山区大场镇政府指导、中国电信上海北区局主办的“大干一场 科创沙龙”系列第九期沙龙活动顺利举办。大场镇“数字化转型”领导小组办公室&#xff08;以下简称“数字办”&#xff09;邀请了来自镇域内外的数十家科创服务企业。万应低代码作为天翼…

D5渲染器有多强大?给你10个选择它的理由

使用此分步指南&#xff0c;可以轻松快速地使用 D5 Render 创建专业视觉效果。使用 D5 Render 创建的视觉效果能够快速有效地传达信息。例如&#xff0c;简单的图形或图表可用于比较不同的数据集或显示变量之间的关系。使用 D5 Render&#xff0c;您可以创建既美观又信息丰富的…

公检系统创新:利用校对软件优化法律文书流程

公检系统可以通过利用校对软件来优化法律文书的流程&#xff0c;从而提高效率和准确性。以下是在创新方面利用校对软件的一些方法&#xff1a; 1.自动校对和修正&#xff1a;校对软件可以与公检系统集成&#xff0c;自动检测文书中的拼写、语法和标点符号错误&#xff0c;并提供…

msvcp120.dll丢失的4种解决方法,教你修复msvcp120.dll文件

当你在使用计算机时&#xff0c;经常会遇到各种各样的错误&#xff0c;最近遇到的应该就是dll文件缺失的错误吧&#xff0c;今天主要来跟大家讲解一下msvcp120.dll这个文件&#xff0c;教大家msvcp120.dll丢失的4种解决方法&#xff0c;好了&#xff0c;废话不多说&#xff0c;…

北京多铁克FPGA笔试题目

1、使用D触发器来实现二分频 2、序列检测器&#xff0c;检测101&#xff0c;输出1&#xff0c;其余情况输出0 module Detect_101(input clk,input rst_n,input data, //输入的序列output reg flag_101 //检测到101序列的输出标志 );parameter S0 2d0;S1 2d1;S2 2d2;S4 …

从金蝶云星空到金蝶云星空通过接口配置打通数据

从金蝶云星空到金蝶云星空通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践&#xff0c;面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司&#xff0c;提供一个通用的ERP服务平台。K/3Cloud支持的协同应…

【LeetCode】数据结构题解(12)[用栈实现队列]

用栈实现队列 &#x1f609; 1.题目来源&#x1f440;2.题目描述&#x1f914;3.解题思路&#x1f973;4.代码展示 所属专栏&#xff1a;玩转数据结构题型❤️ &#x1f680; >博主首页&#xff1a;初阳785❤️ &#x1f680; >代码托管&#xff1a;chuyang785❤️ &…

flask使用cookie (设置cookie与查看cookie内容)

1.flask包cookie的使用 设置cookie app.route(/set_cookie) def set_cookie():resp make_response(Setting cookie)resp.set_cookie(username, John)return resp查看cookie: app.route(/get_cookie) def get_cookie():username request.cookies.get(username)return Welco…

gazebo 导入从blender导出的dae等文件

背景&#xff1a; gazebo 模型库里的模型在我需要完成的任务中不够用&#xff0c;还是得从 solidworks、3DMax, blender这种建模软件里面在手动画一些&#xff0c;或者去他们的库里面在挖一挖。 目录 1 blender 1-1 blender 相关links 1-2 install 2 gazebo导入模型 2-1 g…

使用imu_tools对imu_raw进行滤波处理

文章目录 1 前言2 安装3 查找自己的IMU话题4 imu_tools滤波 1 前言 imu_filter_madgwick&#xff1a;一种滤波器&#xff0c;可将来自常规IMU设备的角速度&#xff0c;加速度和磁力计读数&#xff08;可选&#xff09;融合到一个方向中。基于工作&#xff1a;http://www.x-io.…

电力系统电流三段式保护MATLAB仿真模型

整体模型如下&#xff1a; Matlab/Simulink搭建的电力系统电流保护模型采用辐射型单电源供电的运行方式 Ⅰ段保护的搭建 Ⅰ段保护为瞬时速断保护&#xff0c;根据Ⅰ段整定原则确定整定值。线路发生短路故障时&#xff0c;短路电流急剧增大&#xff1b;超过设置的整定值时&…