Apache Kafka 是一个开源的分布式事件和流处理平台,使用 Java 编写,旨在处理要求严苛的实时数据流。它被设计为具有容错能力,并支持每个集群拥有数百个节点。高效运行更多数量的节点需要容器化和编排流程以实现最优资源使用,例如使用 Kubernetes。
在本教程中,你将学习如何使用 Docker Compose 部署 Kafka。你还将学习如何在 DigitalOcean Kubernetes上使用 Strimzi 部署 Kafka,Strimzi 能够集成到 Kubernetes 中,并允许你使用常规 Kubernetes 清单配置和维护 Kafka 集群,无需手动操作。
准备工作
要想跟着本教程后续的步骤,你需要:
- 在你的电脑上安装 Docker。至于 Ubuntu,可以阅读我们写的 如何在 Ubuntu 上安装和使用 Docker。你只需要完成其中的第1步和第2步。
- 在你的电脑上安装 Docker Compose。
- 一个配置了kubectl默认连接的DigitalOcean Kubernetes v1.23+集群。创建集群时,可以在“连接到你的集群”步骤下找到如何配置kubectl的说明。要在 DigitalOcean 上创建 Kubernetes集群,请阅读 Kubernetes 快速入门。
- 在你的本地电脑上安装 Helm 3 包管理器。完成 如何使用 Helm 3 包管理器在 Kubernetes 集群上安装软件 教程的第1步即可。
- 理解 Kafka ,包括主题、生产者和消费者。了解更多信息,可访问 Kafka 介绍。
步骤1 - 使用 Docker Compose 运行 Kafka
在本节中,你将学习如何在 KRaft 模式下使用 Docker Compose 运行 Kafka。使用 KRaft 可以简化整体配置和资源使用,因为不需要 ZooKeeper 实例。
首先,定义一个包含已解压 Kafka 发布版的 Docker 镜像。之后会使用它来测试与 Kafka 容器的连接,通过使用包含的脚本。
在 Dockerfile 中存储所需的命令。创建并打开它进行编辑:
nano Dockerfile
添加以下行:
FROM ubuntu:latest AS build
RUN apt-get update
RUN apt-get install curl default-jre -y
WORKDIR /kafka-test
RUN curl -o kafka.tgz https://dlcdn.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
RUN tar -xzf kafka.tgz --strip-components=1
容器基于最新的 Ubuntu 版本。在更新包缓存和安装 curl 及 Java 之后,下载一个 Kafka 发布包。在我们写这篇文章教程时,Kafka 的最新版本是 3.7.0。你可以在官方下载页面查找最新版本。
然后,你设置工作目录(WORKDIR)为 /kafka-test,在该目录下下载并解压 Kafka 发布包。在 tar 命令中传递 --strip-components=1 参数,以跳过存档中的第一个目录,该目录以存档本身的名称命名。
保存并关闭文件。
接下来,你将在名为 kafka-compose.yaml 的文件中定义 Docker Compose 配置。通过运行以下命令创建并打开它进行编辑: