搭建kafka集群-使用kraft
Kafka 是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,需要一个沟通两者的桥梁-消息系统。
使用zookeeper和kraft的区别
zookeeper模式:元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理
kraft 模式:不再依赖 zookeeper 集群,而是用三台 controller 节点代替zookeeper,元数据保存在 controller 中,由 controller 直接进行 Kafka 集群管理
kraft模式的好处:
1.Kafka 不再依赖外部框架,而是能够独立运行
2.controller 管理集群时,不再需要从 zookeeper 中先读取数据,集群性能上升
3.由于不依赖 zookeeper,集群扩展时不再受到 zookeeper 读写能力限制
4.controller 不再动态选举,而是由配置文件规定。这样我们可以有针对性的加强
1.下载安装包
2.解压并修改配置文件
tar -zxvf kafka_2.13-3.5.0.tgz
mv kafka_2.13-3.5.0 kafka
cd kafka/config/kraft
vim server.properties
node.id=1 #和其他节点id不能重复
#controller.quorum.voters表示参与投票的节点,我们使用一台机器,用3个端口来区分,格式是 node.id@ip:port
# The connect string for the controller quorum
controller.quorum.voters=1@localhost:9090,2@localhost:9091,3@localhost:9092
#PLAINTEXT 表示对外提供服务(客户端生产和消费)的端口,CONTROLLER和上面的controller.quorum.voters 保持一致,用于节点之间信息交互
# listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://localhost:9093,CONTROLLER://localhost:9090
#advertised.listeners和上面的PLAINTEXT一致都是9093
# If not set, it uses the value for "listeners".
advertised.listeners=PLAINTEXT://localhost:9093
#log.dirs表示日志的目录,也是kafka数据储存的位置。注意需要让 linux 的当前用户对该目录可读可写
# A comma separated list of directories under which to store log files
log.dirs=/usr/local/work/kafka/kafka_data
#创建kafka_data
#复制并配置其他节点
cd /usr/local/work/
cp -r kafka kafka2
cp -r kafka kafka3
#配置节点2
vim /usr/local/work/kafka2/config/kraft
node.id=2
controller.quorum.voters=1@localhost:9090,2@localhost:9091,3@localhost:9092
listeners=PLAINTEXT://:9094,CONTROLLER://:9091
advertised.listeners=PLAINTEXT://localhost:9094
log.dirs=/usr/local/work/kafka2/kafka_data
#配置节点3
vim /usr/local/work/kafka3/config/kraft
node.id=3
controller.quorum.voters=1@localhost:9090,2@localhost:9091,3@localhost:9092
listeners=PLAINTEXT://:9095,CONTROLLER://:9092
advertised.listeners=PLAINTEXT://localhost:9095
log.dirs=/usr/local/work/kafka3/kafka_data
3.运行kafka集群
#可到任意节点
cd /usr/local/work/kafka/bin
./kafka-storage.sh random-uuid
UyxsFJTQSGCzpouXS95ltA
cd /usr/local/work/kafka/bin
./kafka-storage.sh format -t UyxsFJTQSGCzpouXS95ltA -c ../config/kraft/server.properties
cd /usr/local/work/kafka2/bin
./kafka-storage.sh format -t UyxsFJTQSGCzpouXS95ltA -c ../config/kraft/server.properties
cd /usr/local/work/kafka3/bin
./kafka-storage.sh format -t UyxsFJTQSGCzpouXS95ltA -c ../config/kraft/server.properties
#启动集群
#进入三个节点分别启动,这里使用nohup启动
cd /usr/local/work/kafka
nohup ./bin/kafka-server-start.sh ./config/kraft/server.properties >> /usr/local/work/kafka/kafka.log &
cd /usr/local/work/kafka2
nohup ./bin/kafka-server-start.sh ./config/kraft/server.properties >> /usr/local/work/kafka2/kafka.log &
cd /usr/local/work/kafka3
nohup ./bin/kafka-server-start.sh ./config/kraft/server.properties >> /usr/local/work/kafka3/kafka.log &
测试
#任意节点都可测试
./bin/kafka-topics.sh --create --topic test-topic --partitions 1 --replication-factor 1 --bootstrap-server localhost:9093
内容摘自并修改:https://blog.csdn.net/jeffersonchern/article/details/126359578#:~:text=%E6%9C%80%E6%96%B0%E7%89%88kafka%20%283.2.1%29%E5%AE%89%E8%A3%85-%E4%BD%BF%E7%94%A8kraft-%E5%9C%A8%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA3%E8%8A%82%E7%82%B9%E9%9B%86%E7%BE%A4%201%201.%20%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E7%9A%84%E5%AE%89%E8%A3%85%E5%8C%85%202%202.%20%E8%A7%A3%E5%8E%8B%E5%AE%89%E8%A3%85%E5%8C%85%E5%B9%B6%E9%87%8D%E5%91%BD%E5%90%8D,6.%20%E4%BF%AE%E6%94%B9%E8%8A%82%E7%82%B92%E5%92%8C%E8%8A%82%E7%82%B93%E7%9A%84%E9%85%8D%E7%BD%AE%207%207.%20%E8%BF%90%E8%A1%8CKRaft%E9%9B%86%E7%BE%A4%208%208.%20%E6%B5%8B%E8%AF%95