Kafka-Kraft模式介绍
Kafka 2.8.0 正式发布了Kraft的先行版,并且支持在Kraft模式下的部署和运行。KRaft模式下的Kafka可以完全脱离zookeeper运行,使用自己的基于Raft算法实现的quorum来保证分布式Metadata的一致
左图为Kafka现有架构,元数据在zookeeper中,运行时动态选举controller,由controller进行Kafka集群管理。右图为kraft模式架构(实验性),不再依赖zookeeper集群,而是用三台controller节点代替zookeeper,元数据保存在controller中,由controller直接进行Kafka集群管理。
这样做的好处有以下几个:
- Kafka不再依赖外部框架,而是能够独立运行;
- controller管理集群时,不再需要从zookeeper中先读取数据,集群性能上升;
- 由于不依赖zookeeper,集群扩展时不再受到zookeeper读写能力限制;
- controller不再动态选举,而是由配置文件规定。这样我们可以有针对性的加强controller节点的配置,而不是像以前一样对随机controller节点的高负载束手无策。
集群部署
环境说明:
- Kafka 版本:3.0.0
- 三节点部署
1、安装Kafka
tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/ cd /opt/module/ ln -s kafka_2.12-3.0.0/ kafka
2、修改配置文件
]# vim kafka/config/kraft/server.properties #kafka的角色(controller相当于主机、broker节点相当于从机,主机类似zk功能) process.roles=broker, controller #节点ID(不同节点配置不同) node.id=1 #controller服务协议别名 controller.listener.names=CONTROLLER #全Controller列表 controller.quorum.voters=1@kafka01:9093,2@kafka02:9093,3@kafka03:9093 #不同服务器绑定的端口 listeners=PLAINTEXT://:9092,CONTROLLER://:9093 #broker服务协议别名 inter.broker.listener.name=PLAINTEXT #broker对外暴露的地址(不同节点配置不同) advertised.Listeners=PLAINTEXT://kafka01:9092 #协议别名到安全协议的映射 listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL #kafka数据存储目录 log.dirs=/opt/module/kafka/data
- 在kafka02和kafka03上需要对node.id相应改变,值需要和controller.quorum.voters对应。
- 在kafka02和kafka03上需要根据各自的主机名称,修改相应的advertised.Listeners地址。
3、初始化集群数据目录
(1)首先生成存储目录唯一ID
[root@kafka01 kafka_2.12-3.0.0]# ./bin/kafka-storage.sh random-uuid _nOVlsByS8qnh4sFJEKvgg
(2)用该ID格式化Kafka存储目录(三台节点)
[root@kafka01 kafka_2.12-3.0.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties [root@kafka02 kafka_2.12-3.0.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties [root@kafka03 kafka_2.12-3.0.0]# ./bin/kafka-storage.sh format -t _nOVlsByS8qnh4sFJEKvgg -c /opt/module/kafka/config/kraft/server.properties
4、启动集群
./bin/kafka-server-start.sh -daemon config/kraft/server.properties
5、停止集群
bin/kafka-server-stop.sh
转载请注明:西门飞冰的博客 » Kafka-Kraft模式