【中间件】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
相关推荐
残花月伴5 分钟前
springCloud/Alibaba常用中间件之Seata分布式事务
分布式·spring cloud·中间件
我没有开挂36 分钟前
旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑
运维·docker·容器
小鸡,啄米1 小时前
centos9安装docker 配置docker代理
运维·docker·容器
0吉光片羽02 小时前
【SpringBoot】集成kafka之生产者、消费者、幂等性处理和消息积压
spring boot·kafka·linq
遇见火星3 小时前
jenkins流水线常规配置教程!
运维·docker·jenkins
LunarCod4 小时前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
noravinsc4 小时前
国产化中间件 替换 nginx
运维·nginx·中间件
田一一一5 小时前
Android framework 中间件开发(二)
android·中间件·framework
找不到、了5 小时前
MQ消息队列的深入研究
kafka·java-rocketmq·java-rabbitmq·java-activemq
菜菜菜小狗6 小时前
kafka----初步安装与配置
kafka