使用Docker和Bitnami镜像快速搭建本地Kafka情况

打印 上一主题 下一主题

主题 944|帖子 944|积分 2832

一、媒介

随着即将到来的Kafka 4.0的发布,Zookeeper将会完全淘汰,只有KRaft模式将得到支持。这一重大变革必要项目和开辟者两边做好预备工作。
制止目前,最新的Kafka版本是3.6.1,从2022年10月3日发布的3.3.1版本开始,KRaft在生产情况下已经完全支持。
根据当前的发布计划,Kafka 3.7(预计于2024年1月发布)将是最后一个支持Zookeeper的版本。
如果想全面相识KRaft,我建议阅读这篇文章[1]
在本指南中,我将教你怎样使用Docker在本地搭建一个Kafka情况,并提供一个UI工具检察我们的Kafka数据。
注:本文大部门内容参考自 Setting up a Local Kafka Environment in KRaft Mode with Docker-Compose and Bitnami Image, Enhanced by Provectus Kafka-UI[2],侵权删。
二、工具及其地址

Bitnami镜像:https://hub.docker.com/r/bitnami/kafka/
Provectus Kafka UI:https://github.com/provectus/kafka-ui
留意:目前广泛使用的 wurstmeister[3] 镜像仅支持Zookeeper(且目前测试Dockerhub没有该镜像),不支持KRaft,而Bitnami两者都支持!
三、搭建Kafka集群遇到的题目

在搭建Kafka集群的过程中,我遇到了一些题目,大概对你会有所帮助!
题目一:
如果是单机Kafka,则无需指定KAFKA_KRAFT_CLUSTER_ID。与某些教程所建议的相反,Kafka会动态天生一个ID,并将其记录在日志中。如果是集群Kafka,则必要指定,但需留意,一个集群的所有Kafka示例的KAFKA_KRAFT_CLUSTER_ID都是同等的。
题目二:kafka_kafka_1 exited with code 1

如上图,Kafka大概在没有抛出异常的情况下就失败了,在我的情况下,我复制了一个错误的情况配置,唯一确定真正题目的方法是通过BITNAMI_DEBUG=yes 启用调试日志记录,这使我可以或许找到题目的根本原因,因此我建议在故障排除时使用此配置。
这是我报错的根本原因:

四、搭建单机Kafka的配置

你可以在**这里[4]**找到由Bitnami提供的docker-compose文件,但它并不特别有效,由于您必要单独搜索所需的配置。
  1. # $dir/kafka.yml
  2. version: "3"
  3. services:
  4.   kafka_b:
  5.     image: docker.io/bitnami/kafka:3.4
  6.     hostname: kafka_b
  7.     ports:
  8.       - "9092:9092"
  9.       - "9094:9094"
  10.     volumes:
  11.       - "kafka_data:/bitnami"
  12.     environment:
  13.       - KAFKA_ENABLE_KRAFT=yes
  14.       - KAFKA_CFG_PROCESS_ROLES=broker,controller
  15.       - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  16.       - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
  17.       - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
  18.       - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092,EXTERNAL://kafka_b:9094
  19.       - KAFKA_BROKER_ID=1
  20.       - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093
  21.       - ALLOW_PLAINTEXT_LISTENER=yes
  22.       - KAFKA_CFG_NODE_ID=1
  23.       - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
  24.       - BITNAMI_DEBUG=yes
  25.       - KAFKA_CFG_NUM_PARTITIONS=2
  26. volumes:
  27.   kafka_data:
  28.     driver: local
复制代码
关于配置,有几个留意点:
1、你可以使用 KAFKA_ENABLE_KRAFT 变量来切换 KRaft/Zookeeper 模式
2、你可以指定 hostname 配置,如允许以便于Kafka-UI工具检察你的数据(如果主机的UI工具,请留意配置下hosts文件)
3、你如果不想使用默认端口9092,则留意要修改 ports 和 KAFKA_CFG_ADVERTISED_LISTENERS 情况变量
4、如果你想允许主动创建Topic,则可以将 KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE 情况变量设置为 true
这里有别的一份配置可以参考下:
  1. version: "2"
  2. services:
  3.   kafka:
  4.     image: docker.io/bitnami/kafka:3.6
  5.                 # 指定你的容器名,不然是一串随机字符串
  6.     hostname: kafka_b
  7. #    networks:
  8. #      - kafka_net
  9.     ports:
  10.       - "9095:9092"
  11.     volumes:
  12.       - "kafka_data:/bitnami"
  13.     environment:
  14.       # KRaft settings
  15.       - KAFKA_CFG_NODE_ID=0
  16.       - KAFKA_CFG_PROCESS_ROLES=controller,broker
  17.       - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
  18.       # Listeners
  19.       - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
  20.                         # 注意这里要同步改成9095
  21.       - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9095
  22.       - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
  23.       - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
  24.       - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
  25.       # auto create topics
  26.       - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
  27. volumes:
  28.   # data in: /var/lib/docker/volumes/{$network}
  29.   kafka_data:
  30.     driver: local
  31. #networks:
  32. #  kafka_net:
  33. #    driver: bridge
复制代码
留意:搭建集群版Kafka的配置可以在**这里[5]**找到。
五、搭建 Provectus Kafka UI

我测试了几个Kafka-UI工具(Conduktor,Kafka Magic,Offset Explorer等),发现当你必要通过外部名称连接到集群时,它们的行为大概会有所差别,这取决于您的摆设策略。例如,使用Kafka Magic,即使没有外部侦听器(由于此UI未通过docker摆设),我也可以或许直接连接到本地主机(127.0.0.1),但我不使用此工具,由于许多有效的功能仅在允许证下可用。

如果您正在寻找一个免费的开源工具,则 Provectus kafka-ui 大概会适合你。通过它的快速开始教程[6],你同样可以使用Docker快速搭建一个Kafka-ui,但必要留意的是,如果是用容器搭建的,此时连接我们前面的Kafka集群时,使用 localhost:9092[7] 的地址将会连接失败!

为了成功连接到我们前面搭建的本地Kafka,我们必要指定精确的主机名和端口,这些配置在我们的Kafka自身的docker-compose文件中已经设置(留意是 kafka_b:9094,9094是袒露给外部使用的端口,9092是内部使用的端口)。

这是 Provectus kafka-ui 对应的配置
  1. # $dir/kafka-ui.yml
  2. services:
  3.   kafka-ui:
  4.     container_name: kafka-ui
  5.     image: provectuslabs/kafka-ui:latest
  6.     ports:
  7.       - 8080:8080
  8.     environment:
  9.       DYNAMIC_CONFIG_ENABLED: 'true'
  10.       LOGGING_LEVEL_ROOT: 'DEBUG'
  11. #    volumes:
  12. #      - /c/tools/kafka/kui/config.yml:/etc/kafkaui/dynamic_config.yaml
复制代码
LOGGING_LEVEL_ROOT 配置用于故障排除,但现实上并不必要。在启动之后,我们可以在kafka-ui中的相应主题中检察我们的消息。

如果走到这一步,那么恭喜!您的情况如今已经完全设置好并可以使用了。
怎样学习大模子

如今社会上大模子越来越遍及了,已经有许多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模子时也吃了许多亏,踩了无数坑。如今我想把我的履历和知识分享给你们,帮助你们学习AI大模子,可以或许解决你们学习中的困难。
下面这些都是我当初辛苦整理和费钱购买的资料,如今我已将重要的AI大模子资料包括市面上AI大模子各明确皮书、AGI大模子体系学习路线、AI大模子视频教程、实战学习,等录播视频免费分享出来,必要的小同伴可以扫取。

一、AGI大模子体系学习路线
许多人学习大模子的时间没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线渴望可以或许帮助到你们学习AI大模子。

二、AI大模子视频教程

三、AI大模子各大学习册本!

四、AI大模子各大场景实战案例

五、AI大模子面试题库

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表