如果通过docker-compose 安装kafka和zookeeper

韩昊杰
2023-12-30 / 0 评论 / 45 阅读 / 正在检测是否收录...

如果通过docker-compose 安装kafka和zookeeper

一. 先编写 docker-compose.yml 的文件

version: "3"

# 通用配置
x-common-config: &common-config
  KAFKA_ENABLE_KRAFT: no
  ALLOW_PLAINTEXT_LISTENER: yes
  KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
  KAFKA_CFG_INTER_BROKER_LISTENER_NAME: INTERNAL
  KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT

# kafka镜像通用配置
x-kafka: &kafka
  image: bitnami/kafka:3.2
  networks:
    net:
  depends_on:
    - zookeeper

services:

  zookeeper:
    container_name: zookeeper
    image: bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
      - net
    volumes:
      - zookeeper_data:/bitnami/zookeeper

  kafka-0:
    container_name: kafka-0
    <<: *kafka
    ports:
      - "9093:9093"
    environment:
      <<: *common-config
      KAFKA_CFG_BROKER_ID: 0
      KAFKA_CFG_LISTENERS: INTERNAL://:9092,EXTERNAL://0.0.0.0:9093
      KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka-0:9092,EXTERNAL://10.150.36.72:9093 #修改为宿主机IP
    volumes:
      - kafka_0_data:/bitnami/kafka

  kafka-1:
    container_name: kafka-1
    <<: *kafka
    ports:
      - "9094:9094"
    environment:
      <<: *common-config
      KAFKA_CFG_BROKER_ID: 1
      KAFKA_CFG_LISTENERS: INTERNAL://:9092,EXTERNAL://0.0.0.0:9094
      KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka-1:9092,EXTERNAL://10.150.36.72:9094 #修改为宿主机IP
    volumes:
      - kafka_1_data:/bitnami/kafka

  kafka-2:
    container_name: kafka-2
    <<: *kafka
    ports:
      - "9095:9095"
    environment:
      <<: *common-config
      KAFKA_CFG_BROKER_ID: 2
      KAFKA_CFG_LISTENERS: INTERNAL://:9092,EXTERNAL://0.0.0.0:9095
      KAFKA_CFG_ADVERTISED_LISTENERS: INTERNAL://kafka-2:9092,EXTERNAL://10.150.36.72:9095 #修改为宿主机IP
    volumes:
      - kafka_2_data:/bitnami/kafka

volumes:
  zookeeper_data:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: ./zookeeper_data
  kafka_0_data:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: ./kafka_0_data
  kafka_1_data:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: ./kafka_1_data
  kafka_2_data:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: ./kafka_2_data


networks:
  net:

二. 运行docker-compose

docker-compose up -d

三.检测是否启动成功

1.进入到kafka-0 容器中

  docker exec -it kafka-0 /bin/bash

2.创建主题

/opt/bitnami/kafka/bin/kafka-topics.sh \
--create --bootstrap-server kafka-0:9092 \
--topic my-topic \
--partitions 3 --replication-factor 2

3.控制台生产者

/opt/bitnami/kafka/bin/kafka-console-producer.sh \
--bootstrap-server kafka-0:9092 \
--topic my-topic

4.控制台消费者

/opt/bitnami/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server kafka-0:9092 \
--topic my-topic
0

评论 (0)

取消