Docker 安装 Kafka 用于开发和测试

634 阅读1分钟

最近在搞数据采集相关项目,需要把数据发到Kafka,于是就自己搭建开发环境咯。 使用 wurstmeister/kafka 镜像。期间遇到各种问题,大多数都是跨网段无法访问Kafka。

Docker version 20.10.5 docker-compose version 1.28.6 docker-compose.yml

version: '2'

services:
  zookeeper:
    container_name: zookeeper_0
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"

  kafka0:
    container_name: kafka_0
    restart: unless-stopped
    image: wurstmeister/kafka:2.13-2.6.0
    ports:
      - "9082:9082"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

      KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://192.168.10.61:9082
      KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9082
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper

  kafka1:
    container_name: kafka_1
    restart: unless-stopped
    image: wurstmeister/kafka:2.13-2.6.0
    ports:
      - "9083:9083"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

      KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://192.168.10.61:9083
      KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9083
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper

  kafka2:
    container_name: kafka_2
    restart: unless-stopped
    image: wurstmeister/kafka:2.13-2.6.0
    ports:
      - "9084:9084"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

      KAFKA_ADVERTISED_LISTENERS: INSIDE://:9092,OUTSIDE://192.168.10.61:9084
      KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9084
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    depends_on:
      - zookeeper

需要注意的问题是: 容器起来后发送消息会出现 LEADER_NOT_AVAILABLE 选举失败,此时只要重启ZK服务即可 192.168.10.61 绑定的宿主机地址,双网卡情况下可以随意选一个网卡IP,看外网访问需求