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

devtools/2025/1/8 0:29:37/

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

文章目录

  • 前言
    • 消息中间件介绍
    • 1. KRaft模式
    • 2. zookeeper模式
      • 2.1. 单节点部署
        • 安装
        • 验证


前言

最近生产环境上准备部署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

    cat docker-compose.yml
    ------------------------------- docker-compode.yml ----------------------------------------
    version: '3'
    services:kfk:container_name: kfkimage: bitnami/kafka:3.9.0environment:- ALLOW_PLAINTEXT_LISTENER=yes- KAFKA_CFG_ZOOKEEPER_CONNECT=zk-server:2181ports:- "19092:9092"- "19093:9093"volumes:- ./config/server.properties:/opt/bitnami/kafka/config/server.propertiesnetworks:- zk-kfkrestart: unless-stoppedzk-server:container_name: zk-serverimage: zookeeper:3.8.4environment:- ALLOW_ANONYMOUS_LOGIN=yesrestart: alwaysnetworks:- zk-kfknetworks:zk-kfk:driver: bridge
    ------------------------------- docker-compode.yml END ----------------------------------------
  2. server.properties

    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:2181sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
    ------------------------------- server.properties END ----------------------------------------
    
验证
  1. docker ps

    在这里插入图片描述

  2. 测试功能

    # 创建名称为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 demodocker 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
    

http://www.ppmy.cn/devtools/148439.html

相关文章

迟来的前端面试经验

最近也是在换工作,小公司和大厂(虾皮、腾讯)都有面试。几次面试收获还是比较大的,了解许多自己的短板,当然也拿到了合适的offer。本文主要整理下面试遇到的问题和知识点,希望对准备找工作的掘友有所帮助。 …

重学 Android 自定义 View 系列(十):带指针的渐变环形进度条

前言 该篇文章根据前面 重学 Android 自定义 View 系列(六):环形进度条 拓展而来。 最终效果如下: 1. 扩展功能 支持进度顺时针或逆时针显示在进度条末尾添加自定义指针图片使用线性渐变为进度条添加颜色效果 2. 关键技术点解析 2.1 进度方向控制的…

【74CH192D+4511减法30进制2022年7月7日】

缘由30秒定时器错误帮我看看-大数据-CSDN问答 电路图用到S1倒计时信号控制,S2置数30。从演示可以看到置数,开始,暂停,继续,等于0时清零,并且灯亮,最后断开信号输入完成所有功能。看题主有自己动…

解决docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canc

Docker 问题一:解决docker: Error response from daemon: Get “https://registry-1.docker.io/v2/“: net/http: request canc 问题描述问题分析问题处理结论 问题描述 在使用docker进行镜像拉取的时候,存在拉取不下来,或者超市的问题&…

数据仓库中的指标体系模型介绍

数据仓库中的指标体系介绍 文章目录 数据仓库中的指标体系介绍前言什么是指标体系指标体系设计有哪些模型?1. 指标分层模型2. 维度模型3. 指标树模型4. KPI(关键绩效指标)模型5. 主题域模型6.平衡计分卡(BSC)模型7.数据指标框架模…

小结:DNS,HTTP,SMTP,IMAP,FTP,Telnet,TCP,ARP,ICMP

DNS(Domain Name System,域名系统) 是互联网的重要组成部分,它负责将人类易读的域名(如 www.google.com)转换为机器可以识别的 IP 地址(如 142.250.72.206)。这一过程被称为域名解析…

Linux-----进程处理(waitpid,进程树,孤儿进程)

目录 waitpid等待 进程树 孤儿进程 waitpid等待 Linux中父进程除了可以启动子进程,还要负责回收子进程的状态。如果子进程结束后父进程没有正常回收,那么子进程就会变成一个僵尸进程——即程序执行完成,但是进程没有完全结束,其…

医学图像分析工具02:3D Slicer || 医学影像可视化与分析工具 支持第三方插件

3D Slicer 是一款功能全面的开源医学影像分析软件,广泛应用于影像处理、三维建模、影像配准和手术规划等领域。它支持多种医学影像格式(如 DICOM、NIfTI)和丰富的插件扩展,是神经科学、放射学和生物医学研究中不可或缺的工具。 在…