保姆级教程Docker部署Zookeeper模式的Kafka镜像

news/2025/2/11 9:01:26/

目录

一、安装Docker及可视化工具

二、Docker部署Zookeeper

三、单节点部署

1、创建挂载目录

2、命令运行容器

3、Compose运行容器

4、查看运行状态

5、验证功能

四、部署可视化工具

1、创建挂载目录

2、Compose运行容器

3、查看运行状态


一、安装Docker及可视化工具

为了简化安装过程并确保环境一致性,推荐使用 Docker 来本地部署 Kafka。这不仅能够快速启动服务,还能有效解决不同操作系统之间的兼容性问题,采用隔离环境的方式,避免了因环境差异导致的问题。

  • Linux环境安装Docker可参考:Ubuntu上安装 Docker及可视化管理工具
  • Windows环境安装Docker可参考:WSL2中安装Docker—部署Docker Engine方案

二、Docker部署Zookeeper

  • Docker中部署Zookeeper镜像可参考:保姆级教程Docker部署Zookeeper官方镜像

三、单节点部署

1、创建挂载目录

# 创建宿主机kafka挂载目录
sudo mkdir -p /data/docker/kafka/data# 修改data目录权限
sudo chmod 777 /data/docker/kafka/data

2、命令运行容器

# 拉取镜像
sudo docker pull bitnami/kafka:3.4.0# 运行容器
sudo docker run --privileged=true \
--net=zk-net \
-d --name=kafka \
-v /data/docker/kafkat/data:/bitnami/kafka/data \
-p 9092:9092 -p 9093:9093 \
-e TZ=Asia/Shanghai \
-e LANG=C.UTF-8 \
-e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
-e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.9:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
-e BITNAMI_DEBUG=yes \
bitnami/kafka:3.4.0

参数解析如下:

参数参数说明
docker run运行 Docker 容器
-d容器将在后台运行,而不是占用当前的终端会话
--privileged=trueDocker会赋予容器几乎与宿主机相同的权限
--net=zk-net网络模式配置,加入Zookeeper容器创建的网络,以便容器间通讯
--name kafka给容器命名为 kafka,以便于管理和引用该容器
-p 9092:9092 -p 9093:9093映射 kafka 的客户端通信端口和控制器端口

-e KAFKA_CFG_ZOOKEEPER_CONNECT=

zookeeper:2181

zookeeper的连接地址

-e KAFKA_CFG_LISTENERS=

PLAINTEXT://:9092,CONTROLLER://:9093

表示Kafka要监听哪些端口,PLAINTEXT://:9092,CONTROLLER://:9093表示本节点作为混合节点,监听本机所有可用网卡的9092和9093端口,其中9092作为客户端通信端口,9093作为控制器端口

-e KAFKA_CFG_ADVERTISED_LISTENERS=

PLAINTEXT://192.168.3.9:9092

配置Kafka的外网地址,需要修改为对应的Kafka的外网地址。
-e ALLOW_PLAINTEXT_LISTENER=yes允许Kafka监听器使用明文传输
-e BITNAMI_DEBUG=yes显示详细报错信息

3、Compose运行容器

创建docker-compose.yml文件

sudo touch /data/docker/kafka/docker-compose.yml

文件内容如下: 

version: '3'networks:zk-net:external: true  # 标记这个网络是外部网络services:kafka:image: bitnami/kafka:3.4.0container_name: kafkaports:- "9092:9092"- "9093:9093"environment:- TZ=Asia/Shanghai- LANG=C.UTF-8- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.3.9:9092- ALLOW_PLAINTEXT_LISTENER=yes- BITNAMI_DEBUG=yesvolumes:- /data/docker/kafka/data:/bitnami/kafka/dataprivileged: truenetworks: - zk-net

运行容器

#-f:调用文件,-d:开启守护进程
sudo docker compose -f /data/docker/kafka/docker-compose.yml up -d

4、查看运行状态

5、验证功能

验证步骤如下,分别创建一个生产者和一个消费者,查看消费者是否能够收到生产者生产的消息

# 1.进入kafka容器内
sudo docker exec -it kafka /bin/bash# 2.进入kafka安装目录
cd /opt/bitnami/kafka/bin# 3.生产消息
./kafka-console-producer.sh --topic test01 --bootstrap-server localhost:9092# 3.消费消息
./kafka-console-consumer.sh --topic test01 --from-beginning --bootstrap-server localhost:9092 --group group01# 查询主题列表
./kafka-topics.sh --bootstrap-server localhost:9092 --list# 查询消费组列表
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

 生产消息

消费消息

验证结果表明,kafka部署正常,可正常生产和消费消息

四、部署可视化工具

Zookeeper模式的Kafka推荐使用Kafka Eagle进行可视化管理。Kafka Eagle 是一款开源的 Kafka 监控和管理工具,主要用于监控 Kafka 集群的健康状态、性能指标以及管理主题和消费者组。

1、创建挂载目录

# 创建宿主机kafka-eagle挂载目录
sudo mkdir -p /data/docker/kafka-eagle

2、Compose运行容器

创建docker-compose.yml文件

sudo touch /data/docker/kafka-eagle/docker-compose.yml

文件内容如下:

version: '3'networks:zk-net:external: true  # 标记这个网络是外部网络services:kafka-eagle:image: nickzurich/efak:3.0.1container_name: kafka-eagleports:- "8048:8048"environment:- TZ=Asia/Shanghai- EFAK_CLUSTER_ZK_LIST='zookeeper:2181'volumes:- /data/docker/kafka-eagle/config:/opt/efak/conf- /data/docker/kafka-eagle/data:/hadoop/efak/dbprivileged: truenetworks: - zk-net

运行容器

#-f:调用文件,-d:开启守护进程
sudo docker compose -f /data/docker/kafka-eagle/docker-compose.yml up -d

3、查看运行状态

http://192.168.3.9:8048

用户名密码:admin/123456


http://www.ppmy.cn/news/1571119.html

相关文章

相机开启状态下拔出SD卡导致的数据丢失问题及恢复方法

在使用数码相机拍摄照片或视频时,我们偶尔会遇到急需查看已拍摄内容或者管理存储空间的情况。有时,在未关闭相机电源的情况下,用户可能会尝试直接拉出SD卡,这种操作极有可能导致数据丢失甚至损坏SD卡。本文将详细探讨这一现象&…

前端导出pdf,所见即所得

一、推荐方案:html2canvas jsPDF(图片式PDF) javascript import html2canvas from html2canvas; import jsPDF from jspdf;const exportPDF async (elementId, fileName) > {const element document.getElementById(elementId);// 1.…

DFS+回溯+剪枝(深度优先搜索)——搜索算法

DFS也就是深度优先搜索,比如二叉树的前,中,后序遍历都属于DFS。其本质是递归,要学好DFS首先需要掌握递归。接下来咱们就一起来学习DFS涉及的算法。 一、递归 1.什么是递归? 递归可以这样理解把它拆分出来&#xff0…

springboot接入deepseek深度求索 java

以下是在springboot中接入ai deepseek的过程。官网并没有java的示例。其实java的都可以用。 1. 创建 API key 网址:deepseek API keys 点击创建API key,把创建的key值复制下来,以后就不能再查看了,只能重新创建。 2. 封装询问…

【哇! C++】第一个C++语言程序

目录 ​编辑 第一个C语言程序 一、命名空间 1.1 C为什么会有命名空间 1.2 命名空间域 二、命名空间的使用 2.1 展开命名空间和using声明 2.2 展开命名空间的意义 2.3 命名空间的使用 2.3.1 使用using将命名空间中某个成员引入 2.3.2 命名空间中还可以再继续定义命名…

论文阅读:MGMAE : Motion Guided Masking for Video Masked Autoencoding

MGMAE:Motion Guided Masking for Video Masked Autoencoding Abstract 掩蔽自编码(Masked Autoencoding)在自监督视频表示学习中展现了出色的表现。时间冗余导致了VideoMAE中高掩蔽比率和定制的掩蔽策略。本文旨在通过引入运动引导掩蔽策略&#xff0…

golang使用sqlite3,开启wal模式,并发读写

因为sqlite是基于文件的,所以默认情况下,sqlite是不支持并发读写的,即写操作会阻塞其他操作,同时sqlite也很容易就产生死锁。 但是作为一个使用广泛的离线数据库,从sqlite3.7.0版本开始(SQLite Release 3.…

方舟字节码原理剖析:架构、特性与实践应用

方舟字节码原理剖析:架构、特性与实践应用 一、引言 在当今软件行业高速发展的大背景下,应用程序的性能、开发效率以及跨平台兼容性成为了开发者们关注的核心要素。编译器作为软件开发流程中的关键工具,其性能和特性直接影响着软件的质量和…