当前位置:   article > 正文

Kafka 实战 - Docker-compose部署Kafka集群_docker-compose kafka

docker-compose kafka

使用 Docker Compose 部署 Apache Kafka 集群可以简化多容器应用程序的定义和管理。以下是在 Linux 环境中使用 Docker Compose 部署包含 ZooKeeper 和多个 Kafka 节点的实战步骤:

1. 安装 Docker 和 Docker Compose

确保您的 Linux 系统上已经安装了 Docker 以及 Docker Compose。如果没有,请参考官方文档根据您的系统(如 CentOS、Ubuntu、Debian 等)安装:

2. 创建 docker-compose.yml 文件

在项目根目录下创建一个名为 docker-compose.yml 的文件,用于定义服务、网络、卷等配置。以下是一个包含单 ZooKeeper 节点和两个 Kafka 节点的示例配置:

version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"

  kafka-1:
    image: wurstmeister/kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: PLAINTEXT://:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2

  kafka-2:
    image: wurstmeister/kafka
    depends_on:
      - zookeeper
    ports:
      - "9093:9092"
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: PLAINTEXT://:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2

networks:
  default:
    name: kafka-cluster-network
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

注意:

  • KAFKA_BROKER_ID 必须唯一。
  • KAFKA_ADVERTISED_LISTENERS 应设置为其他 Kafka 节点和外部客户端可以访问的地址。这里使用服务名称(如 kafka-1kafka-2)作为内部 DNS 解析,确保集群内通信。

3. 启动 Kafka 集群

在包含 docker-compose.yml 文件的目录下,运行以下命令启动整个集群

docker-compose up -d
  • 1

-d 参数表示在后台(detached mode)运行容器。

4. 验证部署

使用 docker-compose logs 查看容器日志确认启动成功。然后,可以使用 Kafka 工具(如 kafka-topics.shkafka-console-producer.shkafka-console-consumer.sh)测试 Kafka 集群的功能:

  • 创建主题:
docker-compose exec kafka-1 kafka-topics.sh --create --topic test-topic --partitions 3 --replication-factor 2 --if-not-exists --zookeeper zookeeper:2181
  • 1
  • 描述主题以查看其分布:
docker-compose exec kafka-1 kafka-topics.sh --describe --topic test-topic --zookeeper zookeeper:2181
  • 1
  • 发送和接收消息:
# 在一个终端窗口中启动生产者
docker-compose exec kafka-1 kafka-console-producer.sh --topic test-topic --bootstrap-server kafka-1:9092,kafka-2:9092

# 在另一个终端窗口中启动消费者
docker-compose exec kafka-1 kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server kafka-1:9092,kafka-2:9092
  • 1
  • 2
  • 3
  • 4
  • 5

5. 注意事项

  • 在生产环境中,应考虑使用更安全的连接方式,如 SASL 或 SSL 加密。
  • 如果需要持久化数据,可以在 docker-compose.yml 文件中为 Kafka 和 ZooKeeper 服务添加 volumes 配置,将数据目录挂载到宿主机的目录上,避免数据丢失。
  • 对于跨主机部署,确保网络配置正确,尤其是防火墙规则和网络策略。

通过以上步骤,您已经在 Docker Compose 环境中成功部署了 Kafka 集群,并进行了初步的验证。Docker Compose 使得管理和扩展集群变得更为便捷,只需修改 docker-compose.yml 文件即可调整集群配置,使用 docker-compose updocker-compose downdocker-compose scale 等命令进行相应的操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/651996
推荐阅读
相关标签
  

闽ICP备14008679号