【中间件】docker+kafka单节点部署---zookeeper模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

最近生产环境上准备部署ELFK日志监控,先在测试环境部署单节点kafka验证调通相关配置,特此记录kafka部署流程,后续再补充kafka高可用方案;

消息中间件介绍

Apache Kafka是一个发布 - 订阅开源消息代理应用程序。这个消息传递应用程序是用"scala"编码的。基本上,这个项目是由Apache软件启动的。Kafka的设计模式主要基于事务日志设计。

1. KRaft模式

后续补充

KRaft 模式相比 ZooKeeper 模式的主要优势如下:

  • 运维简化:只需部署 Kafka,不再依赖 ZooKeeper。

  • 横向扩展能力提升:Kafka 集群能支持的 Partition 数量是衡量其横向扩展能力的重要指标。此前这个值受 ZooKeeper 与 Controller 之间传递元数据的限制,只能到十万量级,而 KRaft 模式不需要这种传递, 因此可以提升到百万量级。

  • 元数据传播提效:元数据通过 Kafka 的 Topic 管理,并利用 Topic 的生产消费传播,集成性更好的同时也提升了一些底层实现的性能。

2. zookeeper模式

本文采用模式

经典模式

2.1. 单节点部署

安装
  1. docker-compose.yml

    shell 复制代码
    cat docker-compose.yml
    ------------------------------- docker-compode.yml ----------------------------------------
    version: '3'
    services:
      kfk:
        container_name: kfk
        image: bitnami/kafka:3.9.0
        environment:
          - ALLOW_PLAINTEXT_LISTENER=yes
          - KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181
        ports:
          - "19092:9092"
          - "19093:9093"
        volumes:
          - ./config/server.properties:/opt/bitnami/kafka/config/server.properties
        networks:
          - zk-kfk
        restart: unless-stopped
    
      zk-server:
        container_name: zk-server
        image: zookeeper:3.8.4
        environment:
          - ALLOW_ANONYMOUS_LOGIN=yes
        restart: always
        networks:
          - zk-kfk
    
    networks:
      zk-kfk:
        driver: bridge
    ------------------------------- docker-compode.yml END ----------------------------------------
  2. server.properties

    shell 复制代码
    vim server.properties
    ------------------------------- server.properties ----------------------------------------
    num.network.threads=3
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=104857600
    log.dirs=/bitnami/kafka/data
    num.partitions=1
    num.recovery.threads.per.data.dir=1
    offsets.topic.replication.factor=1
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1
    
    # kafka日志保留时间168小时
    log.retention.hours=168
    # kafka清理日志间隔,30000ms(5分钟)检查一次日志文件,清理超过时间的日志
    log.retention.check.interval.ms=300000
    
    # zookeeper连接配置
    zookeeper.connect=zk-server:2181
    
    sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
    ------------------------------- server.properties END ----------------------------------------
验证
  1. docker ps

  2. 测试功能

    shell 复制代码
    # 创建名称为demo的topic,副本1 分区1
    docker run -it --rm --network kfk_zk-kfk -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181 bitnami/kafka:3.9.0 kafka-topics.sh --bootstrap-server kfk:9092 --create --partitions 1 --replication-factor 1 --topic demo
    
    
    # 查看所有topic信息
    docker run -it --rm --network kfk_zk-kfk -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181 bitnami/kafka:3.9.0 kafka-topics.sh --bootstrap-server kfk:9092 --list
    
    # 执行命令
    root@yuan-server:~# docker run -it --rm --network kfk_zk-kfk -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181 bitnami/kafka:3.9.0 kafka-topics.sh --bootstrap-server kfk:9092 --list
    
    
    # 生产消息
    # bin/kafka-console-producer.sh --bootstrap-server kafka-server:9092 --topic demo
    
    docker run -it --rm --network kfk_zk-kfk -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181 bitnami/kafka:3.9.0 kafka-console-producer.sh --bootstrap-server kfk:9092 --topic demo
    
    
    # 消费者
    # 1.消费最新消息,打开后监听并消费生产者最新生产的消息
    # bin/kafka-console-consumer.sh --bootstrap-server kafka-server:9092 --topic demo
    docker run -it --rm --network kfk_zk-kfk -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181 bitnami/kafka:3.9.0 kafka-console-consumer.sh --bootstrap-server kfk:9092 --topic demo
    
    
    # 2.设置--from-beginning参数:表示从头开始消费消息,表示所有历史消息都能看到
    docker run -it --rm --network zk-kafka -e KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181 bitnami/kafka:3.4.0 kafka-console-consumer.sh --bootstrap-server kafka-server:9092 --topic demo --from-beginning
相关推荐
九皇叔叔9 小时前
Kubernetes 核心概念:集群架构、核心组件与资源对象
docker·容器·kubernetes·k8s
rustfs9 小时前
MinIO 国产开源平替正式 GA
分布式·docker·云原生·rust
wdfk_prog14 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
mengge.cloud14 小时前
0917Docker 小白实验教程(理论+实操)
linux·服务器·网络·docker
wdfk_prog15 小时前
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践
运维·缓存·docker·容器·ros
努力努力再努力wz15 小时前
【Docker入门系列】镜像为什么能复用?一文吃透 Docker Image、Registry、运行时架构与常用命令
缓存·docker·容器
StevenSurpass18 小时前
打印业务彻底解耦:FastPrintAgent 统一 JSON 模型 + FastReport 引擎的设计与落地
mqtt·http·中间件·打印·fastreport
java_logo19 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
docker·表单·问卷·tduck·轩辕镜像·填鸭表单·tduck platform
玉&心19 小时前
K8s HPA自动扩缩容
docker·云原生·容器·hpa·kubernates
小小ken19 小时前
docker容器(数据)备份及恢复:使用docker-volume-backup项目
docker·容器