Docker - zookeeper 集群,kafka集群搭建

下载Docker

# 下载对应Docker镜像
docker pull bitnami/zookeeper:3.8.0
docker pull bitnami/kafka:3.1.0

创建网络

docker network create kafka_net --driver bridge

创建zookeeper集群

docker-compose-zookeeper.yml

version: '3'
services:
  zoo1:
    image: bitnami/zookeeper:3.8.0
    hostname: zoo1
    container_name: zoo1
    ports:
      - '2181:2181'
    environment:
      ZOO_SERVER_ID: 1
      ZOO_SERVERS: 0.0.0.0:2888:3888,zoo2:2888:3888,zoo3:2888:3888
      ALLOW_ANONYMOUS_LOGIN: "yes"
    networks:
      - kafka_net

  zoo2:
    image: bitnami/zookeeper:3.8.0
    hostname: zoo2
    container_name: zoo2
    ports:
      - '2182:2181'
    environment:
      ZOO_SERVER_ID: 2
      ZOO_SERVERS: zoo1:2888:3888,0.0.0.0:2888:3888,zoo3:2888:3888
      ALLOW_ANONYMOUS_LOGIN: "yes"
    networks:
      - kafka_net

  zoo3:
    image: bitnami/zookeeper:3.8.0
    hostname: zoo3
    container_name: zoo3
    ports:
      - '2183:2181'
    environment:
      ZOO_SERVER_ID: 3
      ZOO_SERVERS: zoo1:2888:3888,zoo2:2888:3888,0.0.0.0:2888:3888
      ALLOW_ANONYMOUS_LOGIN: "yes"
    networks:
      - kafka_net

networks:
  kafka_net:
    external: true
# 容器启动
docker-compose -f /opt/docker-lib/zookeeper/docker-compose-zookeeper.yml up -d
docker-compose -f /opt/docker-lib/zookeeper/docker-compose-zookeeper.yml stop
docker-compose -f /opt/docker-lib/zookeeper/docker-compose-zookeeper.yml rm

# 查看zookeper 集群状态
docker exec -it zoo1 zkServer.sh status
docker exec -it zoo2 zkServer.sh status
docker exec -it zoo3 zkServer.sh status

创建kafak集群

docker-compose-kafak.yml

version: '3'
services:
  kafka1:
    image: bitnami/kafka:3.1.0
    hostname: kafka1
    container_name: kafka1
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
      # KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${外网访问IP}:${外网映射端口}
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://172.26.112.248:9092
      KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
      ALLOW_PLAINTEXT_LISTENER: "yes"
    networks:
      - kafka_net

  kafka2:
    image: bitnami/kafka:3.1.0
    hostname: kafka2
    container_name: kafka2
    ports:
      - '9093:9092'
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
      # KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${外网访问IP}:${外网映射端口}
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://172.26.112.248:9093
      KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
      ALLOW_PLAINTEXT_LISTENER: "yes"
    networks:
      - kafka_net

  kafka3:
    image: bitnami/kafka:3.1.0
    hostname: kafka3
    container_name: kafka3
    ports:
      - "9094:9092"
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_CFG_LISTENERS: PLAINTEXT://0.0.0.0:9092
      # KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://${外网访问IP}:${外网映射端口}
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://172.26.112.248:9094
      KAFKA_CFG_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
      ALLOW_PLAINTEXT_LISTENER: "yes"
    networks:
      - kafka_net

networks:
  kafka_net:
    external: true
# 容器启动
docker-compose -f /opt/docker-lib/kafka/docker-compose-kafka.yml up -d
docker-compose -f /opt/docker-lib/kafka/docker-compose-kafka.yml stop
docker-compose -f /opt/docker-lib/kafka/docker-compose-kafka.yml rm

# 查看kafka 集群状态
/opt/bitnami/kafka/bin
docker exec -it kafka1 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --topic first --create --partitions 1 --replication-factor 3
docker exec -it kafka1 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --list
docker exec -it kafka2 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --list
docker exec -it kafka3 /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 --list
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值