Docker搭建kafka集群

废话不多说,直接上干货

这篇文章的前提是默认你已经下载好了docker desktop

 1.搭建kafka集群之前的准备

下完docker desktop后你直接打开是一直在转圈圈加载的,这是没有配置镜像的原因

我们进入设置,点击Docker Engine

 将内容替换为:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

然后应该就能刷新出界面来了

2.镜像的拉取

我们知道kafka集群是要依赖zookeeper进行节点之间的通信的,因此我们要拉取zookeeper和kafka两个镜像,下面是拉取的步骤

首先打开powershell(功能更强大,当然cmd也行),右键以管理员身份运行

镜像的拉取很简单

docker pull zookeeper:latest
docker pull kafka:latest

这样就拉取成功了,kafka的同理

3.然后是编写zookeeper和Kafka的配置文件

写配置文件之前还要做一件事就是新建文件夹

首先新建一个总文件夹放你的所有的docker文件,这里我的结构是这样的

你按着我的来建也行,下面的yml文件就是等会要编写的配置文件,先把它新建好备用,当然图片里的storm不用管,我们用不上,然后zookeeper里面还要新建文件夹,如下

zoo1,zoo2,zoo3对应三个节点,然后再分别在zoo1,zoo2,zoo3里面新建如下

接着是kafaka的

同理kafka1,kafka2,kafka3对应三个节点,当然zookeeper与kafka的节点数要对上,(没对上咱也没试过啊,建议还是对上吧)

这是里面的

三个都要建!别忘了!

然后就是配置文件的编写了

先用记事本打开zookeeper的配置文件,从名字很容易看出来吧,有zookeeper的那个,对了如果你不知道怎么新建一个yml文件,你可以先新建一个txt文件,然后把后缀改成yml就可以了

打开之后把以下配置内容复制进去,要注意改里面的路径,还有镜像名

version: '2'

networks:
  zk-net:
    external:
      name: zk-net

services:
  zoo1:
    image: 'zookeeper:3.7.0'
    container_name: zoo1
    hostname: zoo1
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
      ALLOW_ANONYMOUS_LOGIN: "yes"
    networks:
      - zk-net
    ports:
      - 2181:2181
      - 8081:8080
    volumes:
      - /E/soft/docker/zookeeper/zoo1/data:/data
      - /E/soft/docker/zookeeper/zoo1/datalog:/datalog
  zoo2:
    image: 'zookeeper:3.7.0'
    container_name: zoo2
    hostname: zoo2
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
      ALLOW_ANONYMOUS_LOGIN: "yes"
    networks:
      - zk-net
    ports:
      - 2182:2181
      - 8082:8080
    volumes:
      - /E/soft/docker/zookeeper/zoo2/data:/data  
      - /E/soft/docker/zookeeper/zoo2/datalog:/datalog  
  zoo3:
    image: 'zookeeper:3.7.0'
    container_name: zoo3
    hostname: zoo3
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
      ALLOW_ANONYMOUS_LOGIN: "yes"
    networks:
      - zk-net
    ports:
      - 2183:2181
      - 8083:8080
    volumes:
      - /E/soft/docker/zookeeper/zoo3/data:/data  
      - /E/soft/docker/zookeeper/zoo3/datalog:/datalog   

然后是kafka的配置文件

version: "3"

networks:
  zk-net:
    external:
      name: zk-net

services:
  kafka01:
    image: 'bitnami/kafka:2.7.0'
    restart: always    
    container_name: kafka01
    hostname: kafka01
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka01:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - /E/soft/docker/kafka/kafka1:/bitnami/kafka     
    networks:
      - zk-net
  kafka02:
    image: 'bitnami/kafka:2.7.0'
    restart: always       
    container_name: kafka02
    hostname: kafka02
    ports:
      - '9093:9093'
    environment:
      - KAFKA_BROKER_ID=2
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9093
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka02:9093
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - /E/soft/docker/kafka/kafka2:/bitnami/kafka       
    networks:
      - zk-net
  kafka03:
    image: 'bitnami/kafka:2.7.0'
    restart: always       
    container_name: kafka03
    hostname: kafka03
    ports:
      - '9094:9094'
    environment:
      - KAFKA_BROKER_ID=3
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9094    
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka03:9094
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    volumes:
      - /E/soft/docker/kafka/kafka3:/bitnami/kafka   
    networks:
      - zk-net

4.运行配置文件

打开power shell

运行zookeeper

docker-compose -f E:\soft\docker\docker-compose-zookeeper-cluster.yml up -d

注意改配置文件的路径

这就成功启动了

然后是kafka的

docker-compose -f E:\soft\docker\docker-compose-kafka-cluster.yml up -d

启动

启动之后总要关闭吧!下面是关闭的代码

docker-compose -f E:\soft\docker\docker-compose-zookeeper-cluster.yml stop
docker-compose -f E:\soft\docker\docker-compose-kafka-cluster.yml stop

欧克,配置到这就结束了,接下来我们可以在docker desktop里面看到我们的节点的状态

可以看到我们的zookeeper跟kafka的节点都正在running,如果启动失败的话,状态就是exit

5.kafka集群的简单测试

首先我们进入kafka01的控制台

然后新建一个topic,如果你不知道topic是什么的话,建议你先去补一下kafka的知识,这里我就默认你晓得哈

kafka-topics.sh --create --bootstrap-server kafka01:9092 --replication-factor 3 --partitions 5 --topic TestTopic0

查看已创建的topic

kafka-topics.sh --list --bootstrap-server kafka01:9092

可以看到创建成功了

然后就可以创建一个生产者了

kafka-console-producer.sh --broker-list kafka01:9092 --topic TestTopic0

然后随便输入一些消息

然后切换到另一个节点的控制台,创建一个消费者,

kafka-console-consumer.sh --bootstrap-server kafka02:9093 --topic TestTopic0 --from-beginning

可以看到消费者成功消费到了刚刚生产者生产的消息

所以kafka集群搭建成功,你可以去做一些更复杂的应用了

6.声明

这篇教程我能写出来,肯定是借鉴了很多前辈的文章,但是这些文章我都找不到了,这里就无法引用出来了,十分抱歉,如果有所冒犯,请务必联系我!!!

感谢观看!!!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: Docker搭建kafka集群的过程可以参考以下步骤。首先,需要依赖zookeeper来管理kafka集群的状态和元数据。因此,在搭建kafka集群之前,需要先搭建一个zookeeper集群。可以使用Docker创建一个新的网络,并在该网络上启动一个zookeeper集群。接下来,创建一个docker-compose文件(例如docker-compose-zk.yml),在该文件中定义zookeeper集群的配置和启动参数。然后,使用docker-compose命令启动zookeeper集群。接下来,创建一个新的docker-compose文件(例如docker-compose-kafka.yml),在该文件中定义kafka集群的配置和启动参数。在这个文件中,需要挂载一些文件,这些文件包括kafka的配置文件和数据目录。挂载这些文件的目的是为了保留kafka集群的状态和数据。最后,使用docker-compose命令启动kafka集群。在集群启动后,可以安装kafka-manager来管理kafka集群。可以创建一个新的docker-compose文件(例如docker-compose-kafka-manager.yml),在该文件中定义kafka-manager的配置和启动参数。使用docker-compose命令启动kafka-manager。配置kafka-manager连接到kafka集群,并进行测试。\[1\] 在搭建过程中,可能会遇到一些问题。例如,如果之前已经安装过旧版本的docker,可能会导致安装新版本docker时出现冲突的错误。解决这个问题的方法之一是使用wget命令下载docker-ce.repo文件,并将其放置在/etc/yum.repos.d/目录下。这样可以更新docker的安装源,然后重新安装docker。\[2\]\[3\] #### 引用[.reference_title] - *1* [Docker搭建kafka集群](https://blog.csdn.net/weixin_48412846/article/details/128724377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker搭建kafka集群](https://blog.csdn.net/fxh13579/article/details/81299185)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值