????????Kafka 现有架构 元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理 。 而kraft 模式架构(目前在实验阶段)不再依赖 zookeeper 集群,而是用三台 controller 节点代替 zookeeper,元数据保存在 controller 中,由 controller 直接进行 Kafka 集群管理 。
kraft架构的优点:
1)、Kafka 不再依赖外部框架 而是能够独立运行;
2)、controller 管理集群时,不再需要从 zookeeper 中 先读取数据,集群性能上升;
3)、由于不依赖 zookeeper 集群扩展时不再受到 zookeeper 读写能力限制;
4)、controller 不再动态选举,而是由配置文件规定 。这样就可以有针对性的加强 controller 节点的配置,而不是像以前一样无法应对随机 controller 节点的高负载。
目前版本 kafka3.6.1 支持不同的配置,开启不同的模式。
# 解压
tar -zxvf kafka_2.13-3.6.1.tgz -C /opt/software
注意:此文件是 config/kfart 下的配置文件。
# This configuration file is intended for use in KRaft mode, where
# Apache ZooKeeper is not present.
############################# Server Basics #############################
# The role of this server. Setting this puts us in KRaft mode
process.roles=broker,controller
# The node id associated with this instance's roles
node.id=1 # 1->node-1;2->node-2;3->node-3(与controller.quorum.voters参数对应)
# The connect string for the controller quorum
controller.quorum.voters=1@node-1:9093,2@node-2:9093,3@node-3:9093
# 不同服务器绑定的端口
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
# Name of listener used for communication between brokers.
inter.broker.listener.name=PLAINTEXT
# 这里使用对应主机ip (broker 对外暴露的地址)
advertised.listeners=PLAINTEXT://node-1:9092
#controller 服务协议别名
controller.listener.names=CONTROLLER
# 协议别名到安全协议的映射
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
# 数据保存路径
log.dirs=log.dirs=/opt/software/kafka3.6.0/datas
# 1、配置环境变量 vim /etc/profile
export KAFKA_HOME=/opt/software/kafka3.6.0
export PATH=$PATH:$KAFKA_HOME/bin
# 2、激活环境变量
source /etc/profile
# 1、首先生成存储目录唯一 ID
bin/kafka-storage.sh random-uuid
# 2、用该 ID 格式化 kafka 存储目录 (三台节点都要做)
bin/kafka-storage.sh format -t J7s9e8PPTKOO47PxzI39VA(上一步生成的uuid) -c /opt/software/kafka3.6.0/config/kraft/server.properties
#! /bin/bash
case $1 in
"start"){
for i in "node-1" "node-2" "node-3"
do
echo " --------启动 $i Kafka-------"
# kafka 后台启动,使用kraft架构方式
ssh $i "/opt/software/kafka3.6.0/bin/kafka-server-start.sh -daemon /opt/software/kafka3.6.0/config/config/kraft/server.properties"
done
};;
"stop"){
for i in "node-1" "node-2" "node-3"
do
echo " --------停止 $i Kafka-------"
ssh $i "/opt/software/kafka3.6.0/bin/kafka-server-stop.sh "
done
};;
esac
? ? ? ? 为了减少kafka与zookeeper组件通讯消耗,提高性能,目前kafka通过指定不同的配置文件,开启不同的集群架构,目Kraft架构在试验阶段,主流架构依旧使用zookeeper对kafka元数据进行管理,本文详细介绍kraft架构集群搭建。关于使用zookeeper进行kafka集群搭建之前博客参考:https://blog.csdn.net/zwl2220943286/article/details/135350937
????????本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)