一:介绍

kafka在Ralf协议上实现了KRalf,并用此替代了Zookeeper,目前2.8可以开始使用无Zookeeper模式,但官方不建议生产用。具体的协议原理以及说明请自行Baidu或者Google

二:单机部署

下载kafka2.8,解压。可以看到config里面有kraft文件目录。kraft目录下有三个配置文件以及一个readme.md,查看readme.md,也就是你目前能看到的官方给出的无zookeeper模式的配置方式和教程。如果你按照这个部署单节点,看前半部分就够了,很简单。但后面的一堆坑,而且你在网上找不到教程。

单机部署只需要

./bin/kafka-storage.sh random-uuid  生成一个集群ID

./bin/kafka-storage.sh format -t <uuid> -c ./config/kraft/server.properties  把集群ID同所使用的配置文件生成/tmp/kraft-combined-logs目录

./bin/kafka-server-start.sh -daemon ./config/kraft/server.properties 启动

接下来你就可以使用单节点的kafka了

三:集群部署

我写这篇博客的时候,4月29号,网上找不到教程,都是自己根据官方说明摸索的 。

首先,你还是要先生成一个ID,然后确保,这个很重要,确保、/tmp/kraft-combined-logs这个目录是空的。不然,不管你怎么配置集群,这个目录下存的都是你之前配置的元数据。

然后,你先配置/config/kraft/server.properties 文件,这三个文件要根据你集群来配。如果你有三个准备用来当控制器的节点,你必须在controller.quorum.voters上配置这三个控制器

例如:

controller.quorum.voters=1@master:9093,2@slave1:9093,3@slave2:9093

这样,这三个节点就可以用来竞争当控制器,可以容忍一个故障。

     还有一个配置 node.id,这个按节点顺序配就行。

     所以我在server.properties 的 “Server Basic”配置如下 

############################# 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

# The connect string for the controller quorum
controller.quorum.voters=1@master:9093,2@slave1:9093,3@slave2:9093

这个配置的意思就是,我有三个节点用来竞争控制器,并且存到这个序列上,但同时该节点又可以用来充当代理,也就是kafka队列分区可以部署的位置。其余两个配置节点只是node.id不一样而已。如果你有多个节点,并且想三个节点只用来充当控制器,不做代理,控制器可以仅仅在controller.properties下配置,然后其余只做代理的节点配置broker.properties,不变的是每个配置的controller.quorum.voters都是一样的。最后你先用./bin/kafka-storage.sh format -t <uuid> -c这个,指定你的配置文件生成元数据, 最后你在节点上启动的配置参数选你配置的文件就可以了。

      我用docker容器部署也完全OK,自己搞了给镜像,需要的可以联系我。

 

 

 

 

 

 

 

 

 

 

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐