0


Docker for windows 下 Kafka(kraft模式) 安装部署

1.kafka版本 3.6.1

2.docker 拉取kafka镜像

2.1启动docker,打开cmd输入以下命令,查看docker界面,已经拉取了镜像

docker pull bitnami/kafka:3.6.1

3.设置网络

3.1 在cmd中输入以下命令,这将使用指定的IP地址范围和网关地址创建一个名为netkafka****的自定义网络。这个网络将在后续的Kafka Broker容器配置中使用。

docker network create --subnet=172.23.0.0/25 --gateway=172.23.0.1 netkafka

4.运行kafka.yml文件

4.1 在cmd中进入该文件所在目录,执行以下命令(文件内容附文末,创建应该.txt文件,修改后缀为.yml即可)

docker-compose -f kafka.yml up -d

4.2 查看docker界面,kafka集群已经启动

5.集群消费者生产者测试

5.1 打开一个cmd,执行以下命令,进入kafka1容器

docker exec -it kafka1 bash

5.2 执行以下命令,进入目录

cd /opt/bitnami/kafka/bin

*5.3 执行以下命令,创建topic,创建一个副本为3、分区为5的topic*

./kafka-topics.sh --create --topic foo --partitions 5 --replication-factor 3 --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092

*5.4 执行以下命令,查看topic详细信息*

kafka-topics.sh --describe --topic foo --bootstrap-server kafka1:9092, kafka2:9092, kafka3:9092

5.5 新打开一个cmd界面,执行以下命令进入kafak1容器

docker exec -it kafka1 bash

5.6 执行以下命令创建生产者

kafka-console-producer.sh --broker-list 172.23.0.11:9092,172.23.0.12:9092,172.23.0.13:9092 --topic foo

5.7 新打开一个cmd界面,执行以下命令,进入kafka2容器

docker exec -it kafka2 bash

5.8 执行以下命令创建消费者

kafka-console-consumer.sh --bootstrap-server 172.23.0.11:9092,172.23.0.12:9092,172.23.0.13:9092 --topic foo

在生产者中输入消息

查看消费者是否收到消息,可以看见消费者中成功接收到消息

****6.****以下为kafka.yml文件内容

其中,需要修改的内容为

*1.修改宿主机ip KAFKA_CFG_ADVERTISED_LISTENERS自己的主机IP*
2.修改挂载路径

version: "3.6"

services:

kafka1:

  1. container_name: kafka1
  2. image: 'bitnami/kafka:3.6.1'
  3. user: root
  4. ports:
  5. - '19092:9092'
  6. - '19093:9093'
  7. environment:
  8. # 允许使用Kraft
  9. - KAFKA_ENABLE_KRAFT=yes
  10. - KAFKA_CFG_PROCESS_ROLES=broker,controller
  11. - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  12. # 定义kafka服务端socket监听端口(Docker内部的ip地址和端口)
  13. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  14. # 定义安全协议
  15. - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  16. #定义外网访问地址(宿主机ip地址和端口,标红处修改为自己主机IP)
  17. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://1.1.1.1:19092
  18. - KAFKA_CFG_NODE_ID=1
  19. - KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
  20. - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093
  21. - ALLOW_PLAINTEXT_LISTENER=yes
  22. # 设置broker最大内存,和初始内存
  23. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M

volumes:

#挂载路径,标红处修改为自己的路径

  1. - /E/dockers/volume/kafka/broker01:/bitnami/kafka:rw
  2. networks:
  3. netkafka:
  4. ipv4_address: 172.23.0.11

kafka2:

  1. container_name: kafka2
  2. image: 'bitnami/kafka:3.6.1'
  3. user: root
  4. ports:
  5. - '29092:9092'
  6. - '29093:9093'
  7. environment:
  8. - KAFKA_ENABLE_KRAFT=yes
  9. - KAFKA_CFG_PROCESS_ROLES=broker,controller
  10. - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  11. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  12. - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  13. #标红处修改为自己主机IP
  14. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://1.1.1.1:29092
  15. - KAFKA_CFG_NODE_ID=2
  16. - KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI #哪一,三个节点保持一致
  17. - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093
  18. - ALLOW_PLAINTEXT_LISTENER=yes
  19. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M

volumes:

#挂载路径,标红处修改为自己的路径

  1. - /E/dockers/volume/kafka/broker02:/bitnami/kafka:rw
  2. networks:
  3. netkafka:
  4. ipv4_address: 172.23.0.12

kafka3:

  1. container_name: kafka3
  2. image: 'bitnami/kafka:3.6.1'
  3. user: root
  4. ports:
  5. - '39092:9092'
  6. - '39093:9093'
  7. environment:
  8. - KAFKA_ENABLE_KRAFT=yes
  9. - KAFKA_CFG_PROCESS_ROLES=broker,controller
  10. - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  11. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  12. - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  13. # 标红处修改为自己主机IP
  14. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://1.1.1.1:39092
  15. - KAFKA_CFG_NODE_ID=3
  16. - KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
  17. - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093
  18. - ALLOW_PLAINTEXT_LISTENER=yes
  19. - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M

volumes:

#挂载路径,标红处修改为自己的路径

  1. - /E/dockers/volume/kafka/broker03:/bitnami/kafka:rw
  2. networks:
  3. netkafka:
  4. ipv4_address: 172.23.0.13

networks:

name:

netkafka:

  1. external: true
  2. driver: bridge
  3. name: netkafka
  4. ipam:
  5. driver: default
  6. config:
  7. - subnet: 172.23.0.0/25
  8. gateway: 172.23.0.1

代码解释:

1. version: "3.6"`:指定了 Docker Compose 文件的版本。

3. kafka1:kafka2:kafka3::这些是要创建的 Kafka 服务的配置部分。每个服务都包括了容器的名称、镜像、端口映射、环境变量、卷挂载、网络配置等信息。

4. container_name: 指定了容器的名称。

5. image: 指定了要使用的 Docker 镜像。

6. ports: 指定了要映射的端口,格式为 <host_port>:<container_port>

7. environment: 指定了环境变量,用于配置 Kafka 实例。

KAFKA_ENABLE_KRAFT=yes:启用 Kafka 中的 Kafka Raft 强一致性协议 (KRaft)。

****8.****KAFKA_CFG_PROCESS_ROLES=broker,controller:指定 Kafka 进程的角色,其中包括 “broker” 和 “controller”。

****9.****KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER:指定控制器监听器的名称为 “CONTROLLER”。

****10.****KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093:定义 Kafka 监听器的配置。这里使用了两个监听器,一个用于 “PLAINTEXT” 协议,监听 9092 端口,另一个用于 “CONTROLLER” 协议,监听 9093 端口。

****11.****KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT:定义监听器的安全协议映射。这里将 “CONTROLLER” 协议映射到 “PLAINTEXT” 协议。

****12.****KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.135:29092:定义 Kafka 在外部可访问的监听器地址。这里使用了 “PLAINTEXT” 协议和宿主机的 IP 地址。

****13.*****KAFKA_CFG_NODE_ID=1:指定当前 Kafka 节点的节点 ID。*

****14.****KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI:指定 Kafka KRaft 集群的 ID。确保三个节点的集群 ID 相同。

****15.****KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093:指定 KRaft 控制器的选举候选人列表。这里列出了三个节点的 IP 地址和端口。

****16.****ALLOW_PLAINTEXT_LISTENER=yes:允许使用 “PLAINTEXT” 协议的监听器。

  1. KAFKA_HEAP_OPTS=-Xmx512M -Xms256M:指定 Kafka 进程的 Java 堆内存大小。这里将最大堆内存 (Xmx) 设置为 512M,初始堆内存 (Xms) 设置为 256M。

18. volumes: 定义了数据卷的挂载方式,用于持久化存储 Kafka 的数据。

1****9. networks: 指定了要连接的网络。

2****0. networks -> netkafka: 定义了名为 netkafka 的网络配置,其中包括了 IP 地址分配等信息。

解释:****关于网络配置部分,netkafka 是一个外部网络,其 IP 地址由 IP 地址管理 (IPAM) 驱动程序提供。它使用了子网 172.23.0.0/25,并配置了网关地址为 172.23.0.1

标签: docker windows kafka

本文转载自: https://blog.csdn.net/m0_61913190/article/details/136318692
版权归原作者 慕仙少白 所有, 如有侵权,请联系我们删除。

“Docker for windows 下 Kafka(kraft模式) 安装部署”的评论:

还没有评论