Windows下Docker安装Kafka3+集群

编写 docker-compose.yaml

 主要参照:https://www.cnblogs.com/wangguishe/p/17563274.html

version: "3"services:kafka1:image: 'bitnami/kafka:3.4.1'container_name: kafka1environment:- KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFT=yes- KAFKA_CFG_PROCESS_ROLES=broker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.21:19092  # 传递回客户端的元数据,填写宿主机IP地址- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093- KAFKA_BROKER_ID=1- KAFKA_CFG_NODE_ID=1- KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093- ALLOW_PLAINTEXT_LISTENER=yesvolumes:- "/f/kafkadata/apps/kafka/kafka1_data:/bitnami"ports:- "19092:9092"networks:kafka:aliases:- kafkakafka2:image: 'bitnami/kafka:3.4.1'container_name: kafka2environment:- KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFT=yes- KAFKA_CFG_PROCESS_ROLES=broker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.21:29092  # 传递回客户端的元数据,填写宿主机IP地址- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093- KAFKA_BROKER_ID=2- KAFKA_CFG_NODE_ID=2- KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093- ALLOW_PLAINTEXT_LISTENER=yesvolumes:- "/f/kafkadata/apps/kafka/kafka2_data:/bitnami"ports:- "29092:9092"networks:kafka:aliases:- kafkakafka3:image: 'bitnami/kafka:3.4.1'container_name: kafka3environment:- KAFKA_HEAP_OPTS=-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFT=yes- KAFKA_CFG_PROCESS_ROLES=broker,controller- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.21:39092  # 传递回客户端的元数据,填写宿主机IP地址- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093- KAFKA_BROKER_ID=3- KAFKA_CFG_NODE_ID=3- KAFKA_KRAFT_CLUSTER_ID=jkUlhzQmQkic54LMxrB1oV- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,3@kafka3:9093- ALLOW_PLAINTEXT_LISTENER=yesvolumes:- "/f/kafkadata/apps/kafka/kafka3_data:/bitnami"ports:- "39092:9092"networks:kafka:aliases:- kafkakafka-ui:image: provectuslabs/kafka-ui:mastercontainer_name: kafka-uiports:- "38080:8080"restart: alwaysenvironment:- KAFKA_CLUSTERS_0_NAME=local- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka1:9092,kafka2:9092,kafka3:9092- KAFKA_CLUSTERS_0_READONLY=truedepends_on:- kafka1- kafka2- kafka3networks:kafka:aliases:- kafka-ui networks:kafka:driver: bridgeipam:config:- subnet: 172.31.16.0/24

注:KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.21:39092 IP一定要改成宿主机IP,不然Kafka-ui访问报错!!!

错误如下:

2024-04-03 20:07:15 2024-04-03 12:07:15,491 ERROR [parallel-3] c.p.k.u.s.StatisticsService: Failed to collect cluster local info
2024-04-03 20:07:15 java.lang.IllegalStateException: Error while creating AdminClient for Cluster local
2024-04-03 20:07:15     at com.provectus.kafka.ui.service.AdminClientServiceImpl.lambda$createAdminClient$5(AdminClientServiceImpl.java:56)
2024-04-03 20:07:15     at reactor.core.publisher.Mono.lambda$onErrorMap$28(Mono.java:3783)
2024-04-03 20:07:15     at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94)
2024-04-03 20:07:15     at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258)
2024-04-03 20:07:15     at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onError(FluxMap.java:265)
2024-04-03 20:07:15     at reactor.core.publisher.Operators$MonoSubscriber.onError(Operators.java:1886)
2024-04-03 20:07:15     at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:340)
2024-04-03 20:07:15     at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onError(MonoCacheTime.java:363)
2024-04-03 20:07:15     at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:180)
2024-04-03 20:07:15     at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278)
2024-04-03 20:07:15     at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:187)
2024-04-03 20:07:15     at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
2024-04-03 20:07:15     at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
2024-04-03 20:07:15     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
2024-04-03 20:07:15     at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
2024-04-03 20:07:15     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
2024-04-03 20:07:15     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
2024-04-03 20:07:15     at java.base/java.lang.Thread.run(Thread.java:833)
2024-04-03 20:07:15 Caused by: org.apache.kafka.common.errors.TimeoutException: Timed out waiting to send the call. Call: listNodes

在docker-compose.yaml所有的目录中执行安装命令:

docker-compose up -d

执行结果: 

[+] Running 12/12
 ✔ kafka1 Pulled                                                                                                 135.4s
 ✔ kafka2 1 layers [⣿]      0B/0B      Pulled                                                                    135.4s
   ✔ e711576d4690 Pull complete                                                                                  117.1s
 ✔ kafka3 Pulled                                                                                                 135.4s
 ✔ kafka-ui 7 layers [⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                             98.4s
   ✔ 0ce1dd7918a4 Pull complete                                                                                    8.2s
   ✔ 396900a6066f Pull complete                                                                                   69.9s
   ✔ ea77a99f32d6 Pull complete                                                                                   12.1s
   ✔ d8a12b986814 Pull complete                                                                                   13.9s
   ✔ ac59f2acb415 Pull complete                                                                                   16.8s
   ✔ a5385df9cb3a Pull complete                                                                                   19.9s
   ✔ 91a81fafb194 Pull complete                                                                                   90.8s
[+] Running 4/5
 - Network kafkadata_kafka  Created                                                                                2.9s
 ✔ Container kafka2         Started                                                                                2.5s
 ✔ Container kafka3         Started                                                                                2.5s
 ✔ Container kafka1         Started                                                                                2.5s
 ✔ Container kafka-ui       Started                                                                                1.4s

在Docker Desktop中查看是否启动成功:

查看启动日志是否报错:

进入控制台查看:

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

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

相关文章

【一】学习TDengine-总结新技术学习的思考

学习TDengine-总结新技术学习的思考 概要 因业务场景需要我们开始接触时序数据库,于是开始根据以往的学习经验着手熟悉这一项新技术,学习也是一种技能,成功的人越容易成功,因为他们掌握了一套成功的方法,这里提到学习经…

windows 线程同步的四种方式总结

一:内核态下的三种同步方式: 一、互斥变量(Mutex) 互斥对象包含一个使用数量,一个线程ID和一个计数器。其中线程ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。 创…

Vue的学习之旅-part5

Vue的学习之旅-part5 虚拟DOM的原理用JS模拟DOM结构 vue的方法、计算属性、过滤器computed:{} 计算属性computed计算属性的完全体computed计算属性和methods方法的区别:过滤器:filters:{ 多个方法 } Vuex 状态管理模式 前几篇博客: Vue的学习之旅-part1 …

【算法】第二篇 大衍数列

导航 1. 简介2. 数列特征3. 代码演示 1. 简介 大衍数列,来源于《乾坤谱》中对易传“大衍之数五十”的推论。主要用于解释中国传统文化中的太极衍生原理。数列中的每一项,都代表太极衍生过程中,曾经经历过的两仪数量总和。是中华传统文化中隐…

A Study of Network Forensic Investgation in Docker Environments文章翻译

A Study of Network Forensic Investgation in Docker Environments Docker环境下的网络取证研究 摘要 网络罪犯利用越来越多的技术(如虚拟机或基于容器的基础设施)进行恶意活动。 这些虚拟环境的固有动态简化了恶意服务的快速创建,并隐藏了所涉及的系统,这是以前没有的技…

用AI作图,使用这个免费网站,快看我画的大鹏鸟和美女

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

中科院发布大模型想象增强法IAG,无需外部资源,想想就能变强

在人工智能领域,尤其是自然语言处理(NLP)的子领域——问答系统(QA)中,知识的获取和利用一直是推动技术进步的核心问题。近年来,大语言模型(LLMs)在各种任务中展现出了惊人…

风电场智能化转型基于ARM工控机的HDMI数据实时监控显示

全球能源结构不断调整的大背景下,智能电网、太阳能发电、风能发电等清洁能源领域正经历着一场由技术创新引领的深刻变革。在这场变革中,ARM架构的工控机凭借其出色的性能、低功耗及高度可定制化的特点,正在成为能源管理系统的核心组件&#x…

轴向磁通电机应用场景不断扩展 未来市场存在较大开发空间

轴向磁通电机应用场景不断扩展 未来市场存在较大开发空间 根据磁通方向不同,磁通电机分为轴向磁通电机、径向磁通电机两大类,其中轴向磁通电机的磁通方向为轴向,载流导体系径向放置。轴向磁通电机特点在于结构上旋转转子位于定子的侧面&#…

【算法统治世界】动态规划 个人笔记总结

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《数据结构与算法:初学者入门指南》📘&am…

面试字节被挂了

分享一个面试字节的经历。 1、面试过程 一面:上来就直接"做个题吧",做完之后,对着简历上一个项目聊,一直聊到最后,还算比较正常。 二面:做自我介绍,花几分钟聊了一个项目&#xff…

数据库入门-----SQL基础知识

目录 📖前言: 📑SQL概述&&通用语法: 🐳DDL: 🐻操作数据库: 🐞数据类型: 🦉操作表: 🦦DML: 语法规则&#x…

浅析安全传输协议HTTPS之“S”

当前互联网,在各大浏览器厂商和CA厂商的推动下,掀起了一股HTTPS应用浪潮。为了让大家更好的了解HTTPS,本文给大家介绍关于HTTPS 中的S一个整体的认识。从其产生的历史背景、设计目标说起,到分析其协议设计结构、交互流程是如何实现…

R语言数据操纵:常用函数

目录 处理循环的函数 lapply函数 apply函数 mapply函数 tapply函数 split函数 排序的函数 sort函数与order函数 总结数据信息的函数 head函数与tail函数 summary函数 str函数 table函数 any函数 all函数 xtab函数 object.size函数 这篇文章主要介绍R语言中处理…

HarmonyOS 开发-一镜到底“页面转场”动画

介绍 本方案做的是页面点击卡片跳转到详情预览的转场动画效果 效果图预览 使用说明 点击首页卡片跳转到详情页,再点击进入路由页面按钮,进入新的路由页面 实现思路 首页使用了一种视觉上看起来像是组件的转场动画,这种转场动画通常是通过…

swiftui macOS实现加载本地html文件

import SwiftUI import WebKitstruct ContentView: View {var body: some View {VStack {Text("测试")HTMLView(htmlFileName: "localfile") // 假设你的本地 HTML 文件名为 index.html.frame(minWidth: 100, minHeight: 100) // 设置 HTMLView 的最小尺寸…

RabbitMQ-延迟队列的使用

目录 一、使用场景 二、第一种方式:创建具有超时功能且绑定死信交换机的消息队列 三、第二种方式:创建通用延时消息 四、第三种方式:使用rabbitmq的延时队列插件,实现同一个队列中有多个不同超时时间的消息,并按时间…

春秋之境28512

题目说该CMS的/single.php路径下,id参数存在一个SQL注入漏洞。访问看一下随便点一个图片。 发现了注入点?id 那么开始查看闭合符一个 就报错了 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for th…

一起学习python——基础篇(10)

前言,Python 是一种面向对象的编程语言。以前大学读书的时候经常开玩笑说的一句话“如果没有对象,就new一个”。起因就是编程老师上课时经常说一句“首先,我们new一个对象”。 今天讲一下python的类和对象。 类是什么?它是一种用…

【linux】基础IO(三)

上一节基础IO我们着重理解了重定向与缓冲区,这节我们需要重点理解文件再磁盘中是怎样存储。以及上一节我们没有涉及到的知识。 stderr到时有什么用? 目录 fd-> 0 1 2:初步理解2怎样将错误与正确输出都打印在一个文件? 文件在硬…