• Docker部署单节点Kafka


    Docker部署单节点Kafka

    参考镜像

    wurstmeister/zookeeper Overview
    docker pull wurstmeister/zookeeper
    
    • 1
    wurstmeister/kafka Overview
    docker pull wurstmeister/kafka
    
    • 1

    部署单Broker

    定义 docker-compose-single-broker.yml:

    version: '3.8'
    services:
      zookeeper:
        image: wurstmeister/zookeeper
        ports:
          - "2181:2181"
      kafka:
        image: wurstmeister/kafka
        depends_on: [ zookeeper ]
        ports:
          - "9092:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: kafka
          KAFKA_CREATE_TOPICS: "test:1:1"
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
        volumes:
          - /usr/app/run/docker.sock:/var/run/docker.sock
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    kafka 环境变量:
    • KAFKA_ADVERTISED_HOST_NAME:
      你可以修改主机名来以匹配docker主机IP。注意:如果要运行多个Broker,请不要使用localhost或127.0.0.1作为主机ip
    • KAFKA_CREATE_TOPICS:
      kafka-docker在创建期间自动在kafka中创建主题,例如 test:1:1 表示主题test包含1个分区和1个副本。
    • KAFKA_ZOOKEEPER_CONNECT:
      现在是强制的环境变量,表示kafka的zookeeper connect string。
    • KAFKA_ADVERTISED_HOST_NAME:
      192.168.220.150,类似这种 hostName用ip的,一直出错,关键报错信息如下:

    Error while fetching metadata with correlation id xxx {test=LEADER_NOT_AVAILABLE}

    修改为 KAFKA_ADVERTISED_HOST_NAME: kafka,验证可行!

    • kafka depends-on:
      指定 zookeeper 在 kafka 前面启动。

    • kafka volumes 卷映射:
      宿主机中的文件路径:容器中的文件路径,而我的宿主机是Linux主机。

    参考自 Github kafka-docker
    GitHub 上的文件 build: . 修改为 image: wurstmeister/kafka,修改前会出现以下错误:

    failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount698554617/Dockerfile: no such file or directory
    ERROR: Service 'kafka' failed to build : Build failed
    
    • 1
    • 2

    启动与停止命令

    首先需要 cd 进入 docker-compose-single-broker.yml 所在目录:

    启动命令:

    docker-compose -f docker-compose-single-broker.yml up -d
    
    • 1

    结尾不加 -d 会占用当前命令行窗口。因为按 Ctrl + C 会自动 stop 容器。

    停止命令:

    docker-compose -f docker-compose-single-broker.yml stop
    
    • 1

    停止并删除容器命令:

    docker-compose -f docker-compose-single-broker.yml down
    
    • 1

    测试验证:

    1、使用 docker ps -a 查看 zookeeper 和 kafka 容器是否已经正常运行:

    2、进入 kafka 容器控制台:

    docker exec -it app_kafka_1 bash
    
    • 1

    3、进入 kafka 容器中的 bin 目录:

    cd $KAFKA_HOME/bin
    pwd
    
    • 1
    • 2

    pwd 用来打印当前工作目录,方便我们确认是否切换成功

    4、检查自动创建的主题 test:

    kafka-topics.sh --zookeeper app_zookeeper_1:2181 --describe --topic test
    
    • 1

    5、在一个cmd窗口发布消息:

    kafka-console-producer.sh --topic=test --broker-list app_kafka_1:9092
    
    • 1

    6、打开另一个cmd窗口,重复1-3步,订阅消息:

    kafka-console-consumer.sh --bootstrap-server app_kafka_1:9092 --from-beginning --topic test
    
    • 1

    参考文章
    • docker部署单节点kafka
    https://www.cnblogs.com/kendoziyu/p/15129948.html
    
    • 1
  • 相关阅读:
    十、Spring Boot 安全管理(2)
    利用html2canvas + jspdf将页面内容生成pdf并且下载
    做大模型产品,如何设计prompt?
    【力扣】1106. 解析布尔表达式(C++/Go 栈的应用)
    微服务系统设计——商场停车需求分析
    全链路压测:构建三大模型
    蓝桥等考Python组别十三级001
    聊聊心理医疗领域大模型的落地思考
    Mockplus Cloud updated传达设计意图的新方法
    鲁迅为什么打周树人?今天的昨天是明天的什么?chatgpt4.0告诉你
  • 原文地址:https://blog.csdn.net/m0_37903882/article/details/127985943