docker compose 安装kafka集群

本文介绍了如何利用DockerCompose便捷地部署Kafka集群,包括Zookeeper和Kafka-Manager。首先,需要从DockerHub拉取相关镜像,然后编辑docker-compose文件配置服务,最后执行启动命令进行部署。这种方式简化了部署流程,便于管理和监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 使用docker compsose部署kafka,方便快捷,启动方便。

1. 拉取镜像

docker pull bitnami/zookeeper:3.6

docker pull bitnami/kafka:3.0

docker pull hlebalbau/kafka-manager

2. 编辑docker compose文件

version: "3"
 
services:
  zookeeper1:
    image: 'bitnami/zookeeper:3.6'
    container_name: zookeeper1
    ports:
      - '2181:2181'
    environment:
      # 匿名登录--必须开启
      - ALLOW_ANONYMOUS_LOGIN=yes
    volumes:
      - ./zookeeper:/home/docker-compose/kafka/zookeeper
    # restart: always
  
  zookeeper2:
    image: 'bitnami/zookeeper:3.6'
    container_name: zookeeper2
    ports:
      - '2182:2182'
    environment:
      # 匿名登录--必须开启
      - ALLOW_ANONYMOUS_LOGIN=yes
    volumes:
      - ./zookeeper:/home/docker-compose/kafka/zookeeper
    # restart: always
  zookeeper3:
    image: 'bitnami/zookeeper:3.6'
    container_name: zookeeper3
    ports:
      - '2183:2183'
    environment:
      # 匿名登录--必须开启
      - ALLOW_ANONYMOUS_LOGIN=yes
    volumes:
      - ./zookeeper:/home/docker-compose/kafka/zookeeper
    # restart: always
 
  kafka1:
    image: 'bitnami/kafka:3.0'
    container_name: kafka1
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.17.188:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2182,zookeeper3:2183
      - ALLOW_PLAINTEXT_LISTENER=yes
    # restart: always
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
 
  kafka2:
    image: 'bitnami/kafka:3.0'
    container_name: kafka2
    ports:
      - '9093:9093'
    environment:
      - KAFKA_BROKER_ID=2
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9093
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.17.188:9093
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2182,zookeeper3:2183
      - ALLOW_PLAINTEXT_LISTENER=yes
    # restart: always
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
 
  kafka3:
    image: 'bitnami/kafka:3.0'
    container_name: kafka3
    ports:
      - '9094:9094'
    environment:
      - KAFKA_BROKER_ID=3
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.17.188:9094
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2182,zookeeper3:2183
      - ALLOW_PLAINTEXT_LISTENER=yes
    # restart: always
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
 
  # Web 管理界面 另外也可以用exporter+prometheus+grafana的方式来监控 https://github.com/danielqsj/kafka_exporter
  kafka_manager:
    image: 'hlebalbau/kafka-manager:latest'
    container_name: kafka-manager
    ports:
      - "9009:9000"
    environment:
      ZK_HOSTS: "zookeeper:2181"
    # restart: always
    depends_on:
      - zookeeper1
      - zookeeper2
      - zookeeper3
      - kafka1
      - kafka2
      - kafka3

3. 执行启动命令

 docker compose -f kafka.yml up -d

 docker compose -f kafka.yml stop

4. 验证

### 使用 Docker Compose 部署 Kafka 集群 #### 安装并验证 DockerDocker Compose 为了确保环境准备就绪,在部署之前需确认已正确安装 DockerDocker Compose。可以通过执行 `docker-compose --version` 来检验 Docker Compose 是否已经成功安装[^1]。 #### 编写 docker-compose.yml 文件 创建一个名为 `docker-compose.yml` 的文件用于定义服务。此文件应包含所有必要的组件和服务描述,例如 Zookeeper、Kafka broker 以及任何附加工具如管理界面等。对于 Kafka 控制台 UI 的部分配置如下所示: ```yaml services: kafka-console-ui: restart: always image: wdkang/kafka-console-ui:v1.0.10 container_name: kafka-console-ui hostname: kafka-console-ui ports: - '7766:7766' volumes: - /etc/localtime:/etc/localtime - /home/sumengnan/apache/kafka/kafka-console-ui/data:/app/data - /home/sumengnan/apache/kafka/kafka-console-ui/log:/app/log networks: - net networks: net: ``` 上述 YAML 片段展示了如何设置 Kafka Console UI 服务及其挂载卷和网络连接方式[^2]。 #### 启动 Kafka 集群 完成 `docker-compose.yml` 文件编写之后,可以在该文件所在目录下运行命令 `docker-compose up -d` 来启动整个 Kafka 集群。这将会按照所指定的服务列表依次拉取镜像并启动容器实例。 #### 停止与清理 当不再需要运行集群时,可以使用 `docker-compose down` 关闭所有由当前配置文件启动的服务,并移除相关资源;如果希望彻底清除数据,则可追加参数 `-v` 删除关联的数据卷。 #### 监控与维护 建议定期查看日志输出以监控各节点状态,可通过 `docker logs <container-name>` 查看特定容器的日志记录。另外也可以考虑集成 Prometheus 或 Grafana 等开源项目实现更高级别的性能监测功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值