Mac上使用Docker搭建kafka集群方式

 更新时间:2024年02月26日 10:58:18   作者:寒山道杳  
这篇文章主要介绍了Mac上使用Docker搭建kafka集群方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1、拉取镜像

// 拉取 kafka 镜像
docker pull wurstmeister/kafka
// 拉取 zookeeper 镜像
docker pull zookeeper

2、运行zookeeper

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

3、运行kafka

注意:192.168.124.11 为宿主机IP

Kafka0:

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

Kafka1:

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

Kafka2: 

docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=192.168.124.11:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.11: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=192.168.124.11:2181/kafka  配置zookeeper管理kafka的路径192.168.124.11:2181/kafka
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.11:9092  把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP。
  • -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092   配置kafka的监听端口:这个不能改-v  /etc/localtime:/etc/localtime  容器时间同步虚拟机的时间  

4、设置topic

进入kafka0:

docker exec -it kafka0 /bin/bash

进入bin目录:

cd /opt/kafka_2.13-2.8.1/bin

创建topic:

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

查看topic:

// 查看指定 topic
kafka-topics.sh --zookeeper 192.168.124.11:2181 --topic TestTopic --describe 
// 查看 topic 集合
kafka-topics.sh --zookeeper 192.168.124.11:2181 --list

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上分别运行一个消费者:

kafka-console-producer.sh --broker-list 192.168.124.11:9092 --topic TestTopic
 
kafka-console-consumer.sh --bootstrap-server 192.168.124.11:9093 --topic TestTopic --from-beginning
 
kafka-console-consumer.sh --bootstrap-server 192.168.124.11:9094 --topic TestTopic --from-beginning

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker-compose:数据卷volumes挂载规则说明

    docker-compose:数据卷volumes挂载规则说明

    这篇文章主要介绍了docker-compose:数据卷volumes挂载规则说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • docker容器的内存以及状态详解

    docker容器的内存以及状态详解

    通过docker stats获取容器ID,结合ps -ef获取进程PID,利用top -p PID分析内存占用,用于排查阿里云ECS实例内存过高问题,参考阿里云帮助中心相关说明进行处理
    2025-08-08
  • Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)

    Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)

    本文档详细介绍如何使用Docker部署Datart数据可视化平台,并使用PostgreSQL作为元数据库实现数据持久化存储,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • 使用Docker安装部署MySQL和Redis的详细过程

    使用Docker安装部署MySQL和Redis的详细过程

    这篇文章主要介绍了使用Docker安装部署MySQL和Redis,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Docker容器启动报错“permission denied”原因分析及解决方案

    Docker容器启动报错“permission denied”原因分析及解决方案

    Docker容器已经成为云计算后又一个很火的技术,很多人已经开始学习docker了,这篇文章主要介绍了Docker容器启动报错“permission denied”原因分析及解决方案的相关资料,需要的朋友可以参考下
    2025-07-07
  • Docker 部署开源远程桌面工具RustDesk的使用

    Docker 部署开源远程桌面工具RustDesk的使用

    本文介绍了RustDesk开源远程桌面工具的Docker部署使用方法,支持自建服务器,可实现安全私密的远程控制电脑,具有一定的参考价值,感兴趣的可以了解一下
    2024-10-10
  • Docker API 未授权访问漏洞问题解析

    Docker API 未授权访问漏洞问题解析

    这篇文章主要介绍了Docker API 未授权访问漏洞问题解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 如何查看docker镜像的dockerfile

    如何查看docker镜像的dockerfile

    这篇文章主要介绍了如何查看docker镜像的dockerfile问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • 解析docker妙用SpringBoot构建微服务实战记录

    解析docker妙用SpringBoot构建微服务实战记录

    Spring Boot 是 Spring 开源组织的子项目,是 Spring 组件一站式解决方案,本文通过详细案例给大家解析docker妙用SpringBoot构建微服务实战记录,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • 在Docker容器中挂载主机目录的方法

    在Docker容器中挂载主机目录的方法

    在使用Docker时,有时需要将主机上的目录挂载到容器中,以便在主机和容器之间共享数据,使主机上的更新能实时反映到容器中,但不同的操作系统和Docker版本在挂载目录时可能会有不同的方法和注意事项,本文给大家讲解了在Docker容器中挂载主机目录的方法
    2025-06-06

最新评论