• Kafka(Go)教程(一)---通过docker-compose 安装 Kafka


    本文记录了如何通过 docker-compose 快速启动 kafka,部署一套开发环境。

    1. 概述

    Kafka 是由 Apache 软件基金会旗下的一个开源 消息引擎系统

    使用 docker-compose 来部署开发环境也比较方便,只需要提准备一个 yaml 文件即可。

    Kafka 系列相关代码见 Github

    2. docker-compose.yaml

    完整的 docker-compose.yaml内容如下:

    当前 Kafka 还依赖 Zookeeper,所以需要先启动一个 Zookeeper 。

    这里用的是Kafka 2.8.0版本,其他版本不一定兼容。

    1. version: "3"
    2. services:
    3. zookeeper:
    4. image: 'bitnami/zookeeper:latest'
    5. ports:
    6. - '2181:2181'
    7. environment:
    8. # 匿名登录--必须开启
    9. - ALLOW_ANONYMOUS_LOGIN=yes
    10. #volumes:
    11. #- ./zookeeper:/bitnami/zookeeper
    12. # 该镜像具体配置参考 https://github.com/bitnami/bitnami-docker-kafka/blob/master/README.md
    13. kafka:
    14. image: 'bitnami/kafka:2.8.0'
    15. ports:
    16. - '9092:9092'
    17. - '9999:9999'
    18. environment:
    19. - KAFKA_BROKER_ID=1
    20. - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
    21. # 客户端访问地址,更换成自己的
    22. - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://123.57.236.125:9092
    23. - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
    24. # 允许使用PLAINTEXT协议(镜像中默认为关闭,需要手动开启)
    25. - ALLOW_PLAINTEXT_LISTENER=yes
    26. # 关闭自动创建 topic 功能
    27. - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=false
    28. # 全局消息过期时间 6 小时(测试时可以设置短一点)
    29. - KAFKA_CFG_LOG_RETENTION_HOURS=6
    30. # 开启JMX监控
    31. - JMX_PORT=9999
    32. #volumes:
    33. #- ./kafka:/bitnami/kafka
    34. depends_on:
    35. - zookeeper
    36. # Web 管理界面 另外也可以用exporter+prometheus+grafana的方式来监控 https://github.com/danielqsj/kafka_exporter
    37. kafka_manager:
    38. image: 'hlebalbau/kafka-manager:latest'
    39. ports:
    40. - "9000:9000"
    41. environment:
    42. ZK_HOSTS: "zookeeper:2181"
    43. APPLICATION_SECRET: letmein
    44. depends_on:
    45. - zookeeper
    46. - kafka

    镜像

    在 dockerhub 上 kafka 相关镜像有 wurstmeister/kafka 和 bitnami/kafka 这两个用的人比较多,大概看了下 bitnami/kafka 更新比较频繁所以就选这个了。

    监控

    监控的话 hlebalbau/kafka-manager 这个比较好用,其他的都太久没更新了。

    不过 kafka-manager 除了监控外更偏向于集群管理,误操作的话影响比较大,如果有 prometheus + grafana 监控体系的直接用 kafka_exporter 会舒服很多。

    另外 滴滴 开源的 LogikM 看起来也不错。

    数据卷

    如果有持久化需求可以放开 yaml 文件中的 volumes相关配置,并创建对应文件夹同时将文件夹权限调整为 777

    因为容器内部使用 uid=1001 的用户在运行程序,容器外部其他用户创建的文件夹对 1001 来说是没有权限的。

    目录结构

    整体目录结构如下所示:

    1. 1
    2. 2
    3. 3
    4. 4
    1. kafka
    2. ├── docker-compose.yaml
    3. ├── kafka
    4. └── zookeeper

    启动

    在 docker-compose.yaml 文件目录下使用以下命令即可一键启动:

    1
    
    docker-compose up
    

    3. 测试

    启动后浏览器直接访问localhost:9000即可进入 Web 监控界面。

  • 相关阅读:
    Elastic Stack 8.10:更简单的跨集群搜索和身份验证等等
    子网络划分与互通,上网行为审计
    C++之struct匿名结构体实例(二百四十四)
    “淘宝” 开放平台接口设计思路(内附API接口免费接入地址)
    (十一)数据结构-线索二叉树
    【JAVA】网页版登录注册系统2.0
    Scrapy框架(四)常用的类概述
    dubbo参数配置解析
    JAVA SPI
    JavaWeb学习笔记
  • 原文地址:https://blog.csdn.net/lililidahaoren/article/details/126058407