提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 消息中间件介绍
- 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. 单节点部署
安装
-
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 ----------------------------------------
-
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 ----------------------------------------
验证
-
docker ps
-
测试功能
# 创建名称为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