Kafka-Kraft模式

概述

Kafka-Kraft模式(Kafka Raft)是Apache Kafka的一种新的运行模式,旨在替代传统的ZooKeeper模式。Kraft模式将Kafka的元数据管理从ZooKeeper移除,转而使用Raft协议在Kafka自身内部管理元数据。这种变化简化了Kafka的部署和管理,提高了系统的一致性和可靠性。

架构变化:

image-20240602221839739
  • 左图为 Kafka现有架构,元数据在 zookeeper 中,运行时动态选举 controller,由controller进行Kafka集群管理。
  • 右图为kraft模式架构(实验性),不再依赖zookeeper集群,而是用三台controller节点代替zookeeper,元数据保存在controller中,由controller直接进行Kafka集群管理。

优点:

简化部署:不再需要单独部署和维护ZooKeeper集群,降低了运维复杂性和成本。

一致性和可靠性:Raft协议提供了强一致性保证,确保元数据在多个节点之间的一致复制,提高了系统的可靠性。

高可用性:通过控制节点的多数共识机制,在少数节点故障的情况下仍能保证集群的正常运行。

性能优化:减少了Kafka与ZooKeeper之间的通信开销,可能带来性能上的提升。

具体安装

  • 下载tgz安装包
  • 解压:tar -zxvf kafka_2.12-3.0.0.tgz
  • 修改config/kraft/server.properties配置文件
    • process/roles:节点的角色,有broker和controller可以同时选择
    • node.id:节点id,用于选举也需要保证唯一
    • controller.quorun.voters:controller选举的集群
    • advertised.listeners:对外暴露的broker地址
    • log.dirs:数据存储地址
  • 初始化集群数据目录:
    • 生成存储目录唯一id:bin/kafka-storage.sh random-uuid
    • 用该id格式化各个节点kafka存储目录:bin/kafka-storage.sh format -t 上述id -c /usr/app/kafka_2.12-3.0.0/config/kraft/server.properties
  • 启动各节点kafka: kafka-server-start.sh -daemon /usr/app/kafka_2.12-3.0.0/config/kraft/server.properties