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

ops/2025/2/11 13:21:18/

目录

一、安装Docker及可视化工具

二、Docker部署Zookeeper

三、单节点部署

1、创建挂载目录

2、运行Kafka容器

3、Compose运行Kafka容器

4、查看Kafka运行状态

5、验证生产消费

四、部署可视化工具

1、创建挂载目录

2、Compose运行Kafka-eagle容器

3、查看Kafka-eagle运行状态


一、安装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、运行Kafka容器

# 拉取镜像
sudo docker pull bitnami/kafka:3.4.0# 运行容器
sudo docker run --privileged=true \
--net=bridge \
-d --name=kafka \
-v /data/docker/kafkat/data:/bitnami/kafka/data \
-p 9092:9092 -p 9093:9093 \
-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=bridge网络模式配置,默认是bridge,bridge表示使用容器内部配置网络
--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运行Kafka容器

创建docker-compose.yml文件

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

文件内容如下: 

version: '3'services:kafka:image: bitnami/kafka:3.4.0container_name: kafkaports:- "9092:9092"- "9093:9093"environment:- KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.3.9: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: truenetwork_mode: "bridge"

运行容器

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

4、查看Kafka运行状态

5、验证生产消费

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

# 进入kafka容器内
sudo docker exec -it kafka /bin/bash# 进入kafka安装目录
cd /opt/bitnami/kafka/bin# 生产消息
./kafka-console-producer.sh --topic test01 --bootstrap-server localhost:9092# 消费消息
./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运行Kafka-eagle容器

创建docker-compose.yml文件

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

文件内容如下:

version: '3'services:kafka-eagle:image: nickzurich/kafka-eagle:3.0.1container_name: kafka-eagleports:- "8048:8048"environment:- TZ=Asia/Shanghaivolumes:- /data/docker/kafka-eagle/config:/opt/efak/conf- /data/docker/kafka-eagle/data:/hadoop/efak/dbprivileged: truenetwork_mode: "bridge"

运行容器

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

3、查看Kafka-eagle运行状态

http://192.168.3.9:8048

用户名密码:admin/123456


http://www.ppmy.cn/ops/157244.html

相关文章

JUnit 5 条件测试注解详解

JUnit 5 条件测试注解详解 JUnit 5 提供了一系列条件测试注解,允许开发者根据运行时环境、配置或自定义逻辑动态决定是否执行测试。这些注解能有效减少误报,提升测试的灵活性和适应性。以下是所有条件测试注解的详细介绍及示例: 一、条件测试…

高效利用爬虫开发获取淘宝分类详情:电商数据挖掘新路径

在电商领域,淘宝作为中国最大的电商平台之一,其分类详情数据对于市场分析、竞争策略制定以及电商运营优化具有极高的价值。通过爬虫技术,我们可以高效地获取这些数据,为电商从业者提供强大的数据支持。本文将详细介绍如何利用爬虫…

2023 Java 面试题精选30道

以下是Java面试题精选30道,每道题都附有答案及代码解析,希望对您的面试有所帮助。 Java中的四种访问修饰符分别是什么?它们的作用是什么? 答案:四种访问修饰符分别是public、protected、default、private。它们的作用…

R语言 数据分析 案例: 探索幸福的公式: 健康,金钱与爱

起因, 目的: 一个数据分析的案例,简单画图,分析一下。 我一开始是用的是 Jupyter notebook, 后来改写为 R-mardown (Rmd), 然后又转为 html, 所以此项目, 总共有3种格式。 完整的文件,0 积分下载 Explore the formula for happiness: Health, Money and Love 背景介…

学习笔记:机器学习中的数学原理(一)

1. 集合 集合分为有限集和无限集; 对于有限集,两集合元素数相等即为等势; 对于无限集,两集合元素存在一一映射关系即为等势; 无限集根据是否与正整数集等势分为可数集和不可数集。 2. sigmoid函数(也叫…

集合7天学java—day2

package msb_7天学完java.集合;//集合:用于存放相同的个体 import java.util.ArrayList;/***ArrayList集合* 增 add* 删 remove* 改 set* 查 get* 集合的遍历查看 普通for循环*/ public class set {public static void main(String[] args) {//定义一个集合Arr…

Goland的context原理(存在问题,之前根本没有了解,需要更加深入了解)

context源码 context.Context可以携带与请求相关的一些关键信息,比如用户 ID、请求 ID 等,在整个请求处理的调用链中,各个函数可以方便地从context中获取这些信息,而无需通过层层传递函数参数的方式。 // context 包里的方法是线…

AI时代医疗大健康微服务编程提升路径和具体架构设计

一、引言 1.1 研究背景与意义 随着科技的飞速发展,人工智能(Artificial Intelligence,AI)已逐渐渗透至各个领域,医疗大健康领域亦不例外。人工智能与医疗大健康的融合,正引领着医疗行业迈向智能化、精准化、个性化的新时代,为解决医疗资源分布不均、提升医疗服务效率和…