使用Docker容器搭建Kafka集群的详细过程讲解

2023-10-31

一、Kafka集群的搭建

1.拉取相关镜像

  1. docker pull wurstmeister/kafka
  2. docker pull zookeeper

2.运行zookeeper

  1. docker run -d --name zookeeper -p 2181:2181 -t zookeeper

3.运行kafka

Kafka0:

  1. docker run -d --name kafka0 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

Kafka1:

  1. docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka

Kafka2:

  1. docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.16.129:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.16.129:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka

参数说明:

  • -e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
  • -e KAFKA_ZOOKEEPER_CONNECT=10.20.8.50:2181/kafka 配置zookeeper管理kafka的路径10.20.8.50:2181/kafka
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.20.8.50:9092 把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP。
  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口:这个不能改
  • -v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

启动3个Kafka节点

4.设置topic

进入kafka0

  1. docker exec -it kafka0 /bin/bash

进入bin目录

  1. cd /opt/kafka_2.13-2.8.1/bin

创建topic

  1. kafka-topics.sh --create --zookeeper 192.168.16.129:2181 --replication-factor 3 --partitions 5 --topic TestTopic

查看topic

  1. kafka-topics.sh --describe --zookeeper 192.168.16.129:2181 --topic TestTopic

Kafka的topic所有分区会分散在不同Broker上,所以该topic的5个分区会被分散到3个Broker上,其中有两个Broker得到两个分区,另一个Broker只有1个分区,如图所示:

集群节点说明:

  • Topic: TestTopic PartitionCount: 5 ReplicationFactor:3代表TestTopic有5个分区,3个副本节点;
  • Topic: 代表主题名称
  • Leader代表主题节点号,
  • Replicas代表他的副本节点有Broker.id = 2、0、1(包括Leader Replica和Follower Replica,且不管是否存活),
  • Isr表示存活并且同步Leader节点的副本有Broker.id = 2、0、1

5.进行生产者和消费者测试

分别在Broker0上运行一个生产者,Broker1、2上分别运行一个消费者:

  1. kafka-console-producer.sh --broker-list 192.168.16.129:9092 --topic TestTopic
  2. kafka-console-consumer.sh --bootstrap-server 192.168.16.129:9093 --topic TestTopic --from-beginning
  3. kafka-console-consumer.sh --bootstrap-server 192.168.16.129:9094 --topic TestTopic --from-beginning

到此这篇关于Docker容器 Kafka集群的搭建的文章就介绍到这了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Docker容器搭建Kafka集群的详细过程讲解 的相关文章

  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 为什么 iconv 在 php:7.4-fpm-alpine docker 中返回空字符串

    给出以下代码
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在接口中使用默认方法是否违反接口隔离原则?

    我正在学习 SOLID 原则 ISP 指出 客户端不应被迫依赖于他们所使用的接口 不使用 在接口中使用默认方法是否违反了这个原则 我见过类似的问题 但我在这里发布了一个示例 以便更清楚地了解我的示例是否违反了 ISP 假设我有这个例子 pu
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类

随机推荐

  • 单片机C语言之指针变量

    单片机C语言变量分别有char型 int型 long型 float型等 它们分别占用内存为1个单元 2单元 4单元 4单元等 另外数组和字符串则占用了内存某段连续的单元 这些变量的共同特征是它们都装的数值 那如果一个变量里面装的不是数值 而
  • 操作系统及驱动、进程、服务等解析

    操作系统是神马呢 顾名思义就是操作管理及控制计算机硬件与软件资源的计算机程序 同时也是计算机硬件和软件的接口 操作系统充当着用户和硬件设备之间桥梁的作用 用户可以通过操作系统让硬件设备工作实现自己想要的要求 但大部分是通过应用程序让操作系统
  • Java调用.exe文件

    package cn sos psasps public class TestExe public static void main String args Runtime runtime Runtime getRuntime test01
  • linux权限---【600,644,700,755,711,666,777】

    权限简介 Linux系统上对文件的权限有着严格的控制 用于如果相对某个文件执行某种操作 必须具有对应的权限方可执行成功 Linux下文件的权限类型一般包括读 写 执行 对应字母为 r w x Linux下权限的粒度有 拥有者 群组 其它组
  • 小故事理解TCP/IP连接时的三次握手

    在TCP IP协议中 TCP协议通过三次握手建立一个可靠的连接 示意图如下 下面通过一个小故事简单理解一下这三次握手的具体含义 一天 快递员小客 客户端 准备去小服 服务器 家去送快递 准备与服务器进行连接 当走到小服家门口发现 小服家大门
  • (附源码)springboot大学生防疫封校管理系统 毕业设计632124

    大学生防疫封校管理系统 摘 要 2019年12月19号中国武汉发生第一例新冠病毒的到来 大家都在听从政府的号召在居家隔离 不管是在城市还是在乡镇 农村 这引起我的注目 设计一套大学生防疫封校管理系统 疫情防控需要大家共同努力 团结对校园学生
  • Qt QCommandLinkButton学习

    widget h ifndef WIDGET H define WIDGET H include
  • Nginx的配置(转载)

    虚拟主机与域名解析 虚拟主机是使用特殊的软硬件技术 把一台运行在因特网上的服务器主机分成一台台 虚拟 的主机 每一台虚拟主机都具有独立的域名 具有完整的Internet服务器 WWW FTP Email等 功能 虚拟主机之间完全独立 并可由
  • CVPR 2023|3D模型分割新方法!不用人工标注,只需一次训练,未标注类别也能识别

    不需要人工标注 只需要一次训练 就能让3D模型理解语言并识别未标注过的类别 比如看下面这个例子 未标注的 unannotated 黑板和显示器 3D模型经过这个方法训练之后 就能很快 抓准 目标进行划分 再比如 给它分别输入sofa cou
  • python selenium 常用断言的使用方法

    assertEqual a b msg 测试失败时打印的信息 断言a和b是否相等 相等则测试用例通过 assertNotEqual a b msg 测试失败时打印的信息 断言a和b是否相等 不相等则测试用例通过 assertTrue x m
  • 蒙特卡洛模拟入门的几个小例子(R语言实现)

    嗯 第一个例子是怎么用蒙特卡洛模拟求pi的值 第二个是用蒙特卡洛模拟求解定积分 第三个是用蒙特卡洛模拟证券市场求解其收益 第四个是用蒙特卡洛模拟验证OLS的参数的无偏性 然后还要R是如何求导 计算导数的 R的点的形状的集合 以便于查看 转载
  • Python学习——捕获异常

    根据B站 黑马程序员 的python教程记录笔记 一 基本了解 看了标题之后可能会有疑惑 什么是捕获异常 为什么要捕获异常呢 如果在开发中 对某些代码的执行不能确定是否正确 可以增加 try 尝试 来 捕获异常 捕获异常最简单的语法格式 t
  • 在Windows中,开机自启动

    在Windows中 你可以按照以下步骤设置程序的开机自启动 1 使用快捷键 Win R 打开运行对话框 2 输入 shell startup 并点击 确定 这将打开当前用户的启动文件夹 3在启动文件夹中创建一个程序的快捷方式 可以右键点击文
  • 翻转数字,例如输入123 输出321 输入-12300 输出-321,输入1300 输出31,输入0 输出0。

    str1 input 请任意输入一串数字 第一种方法 if int str1 gt 0 判断大于0 print int str1 1 此处用int 避免str1是以0结尾字符串 int 后 0自然去除 elif int str1 lt 0
  • 【计算机网络】TCP详解

    计算机网络 传输层 TCP详解 传输层 TCP和UDP区别 优缺点 应用 用户数据报协议 UDP User Datagram Protocol 传输控制协议 TCP Transmission Control Protocol 无连接 面向连
  • vim插件3--dict

    vim插件3 dict 功能 vim dict插件主要用于从本地或者特定服务器查找相关数据 此功能正常情况下用不上 vim dict有一个不错的功能为从特定的字典文件中补全文本或单词 此外可以用 dict文件来实现不同类型代码的自动补全功能
  • HTML 展开收起

    1 授课老师教的展开收起的实现 Html部分 1 div class cont div class tab box2 table class caozuo cellspacing 0 tr th 操作详情 th th 操作人 th th 环
  • Redis学习0 -介绍及安装

    Redis 介绍 Redis是一个key value存储系统 数据库 redis支持存储的value类型有很多种 如string 字符串 list 链表 set 集合 zset 有序集合 和hash 哈希类型 安装redis库 因为我是用u
  • 简单易懂!如何制作系统启动盘(win7/win10/win11...),利用u盘重装系统!

    一 制作启动盘 1 准备一个空u盘 2 在电脑上下载光盘刻录工具 最新UltraISO官方免费下载 UltraISO软碟通中文官方网站 3 在电脑上下载光盘镜像文件 操作系统 选择自己需要的系统进行下载MSDN 我告诉你 做一个安静的工具站
  • 使用Docker容器搭建Kafka集群的详细过程讲解

    一 Kafka集群的搭建 1 拉取相关镜像 docker pull wurstmeister kafka docker pull zookeeper 2 运行zookeeper docker run d name zookeeper p 2