Docker Compose 单节点 Kafka

介绍

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 YAML 文件来配置应用程序的服务、网络和卷等。在这篇文章中,我们将介绍如何使用 Docker Compose 来部署单节点的 Kafka。

Kafka 是一个分布式流处理平台,用于构建高吞吐量、可扩展、容错的实时数据流应用程序。它使用多个分区和多个副本来实现数据的持久化和可靠性。Docker Compose 可以方便地部署和管理 Kafka 服务,使得我们可以快速搭建开发和测试环境。

准备工作

在开始之前,确保已经安装了 Docker 和 Docker Compose。可以通过以下命令来检查是否安装成功:

docker --version
docker-compose --version

如果输出了对应的版本号,则说明安装成功。

编写 Docker Compose 文件

下面是一个简单的 Docker Compose 文件示例,用于部署单节点的 Kafka 服务:

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    networks:
      - kafka-network
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper
    networks:
      - kafka-network
networks:
  kafka-network:
    driver: bridge

以上文件定义了两个服务:zookeeper 和 kafka。zookeeper 是 Kafka 的依赖服务,用于保存 Kafka 的元数据和状态信息。kafka 是 Kafka 服务本身。

在这个文件中,我们使用了 wurstmeister 提供的 Kafka 和 ZooKeeper 的镜像。我们将 ZooKeeper 的 2181 端口映射到宿主机的 2181 端口,将 Kafka 的 9092 端口映射到宿主机的 9092 端口。我们还定义了一个自定义网络 kafka-network,用于连接 zookeeper 和 kafka 服务。

启动 Kafka 服务

在终端中,进入到包含 Docker Compose 文件的目录,执行以下命令启动 Kafka 服务:

docker-compose up -d

这个命令将会启动 Kafka 服务,并在后台运行。可以使用以下命令来查看服务状态:

docker-compose ps

如果一切正常,应该会看到如下输出:

       Name                     Command                State                          Ports
-------------------------------------------------------------------------------------------------------------
kafka-compose_kafka_1   start-kafka.sh                   Up      0.0.0.0:9092->9092/tcp
kafka-compose_zookeeper_1         /bin/sh -c /usr/sbi ...   Up      0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp

测试 Kafka 服务

要测试 Kafka 服务是否正常工作,可以使用 Kafka 的命令行工具来创建一个主题,并发送和接收消息。

首先,进入到 Kafka 容器:

docker exec -it kafka-compose_kafka_1 /bin/bash

然后,使用以下命令创建一个名为 test 的主题:

kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

接下来,可以使用以下命令来发送消息:

echo "Hello, Kafka!" | kafka-console-producer.sh --topic test --bootstrap-server localhost:9092

最后,使用以下命令来接收消息:

kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092

如果一切正常,应该能够看到刚刚发送的消息:

Hello, Kafka!

停止和清理

要停止 Kafka 服务,可以使用以下命令:

docker-compose down

这个命令将会停止并删除 Kafka 容器和相关的网络和卷。

总结

本文介绍了如何使用 Docker Compose 部署单节点的 Kafka