一、Kafka 集群 KRaft 介绍
Kafka
的
KRaft
模式是一种新的元数据管理方式,旨在去除对
ZooKeeper
的依赖,使
Kafka
成为一个完全自包含的系统。在
Kafka
的传统模式下,元数据管理依赖于
ZooKeeper
,这增加了部署和运维的复杂性。为了解决这个问题,
Kafka
社区引入了
KRaft
模式。在
KRaft
模式下,所有的元数据,包括主题、分区信息、副本位置等,都被存储在
Kafka
集群内部的特殊日志中。这个日志使用
Raft
协议来保证一致性。
在左边架构中,
Kafka
集群包含多个
Broker
节点和一个
ZooKeeper
集群。
Kafka
集群的
Controller
在被选中后,会从
ZooKeeper
中加载它的状态。并且通知其他
Broker
发生变更,如
Leaderanddis
r和
Updatemetdata
请求。
右边新的架构中,三个
Controller
节点替代三个
ZooKeeper
节点。
Controller
节点和
Broker
节点运行在不同的进程中。
Controller
节点中会选举出一个
Leader
角色。并且
Leader
不会主动向
Broker
推送更新,而是由
Broker
拉取元数据信息。
注意:
Controller
进程与
Broker
进程在逻辑上是分离的,同时允许部分或所有
Controller
进程和
Broker
进程是同一个进程,即一个
Broker
节点即是
Broker
也是
Controller
。
下面主要实践下
Kafka
集群
KRaft
模式下的搭建。
二、Kafka 集群 KRaft 模式搭建
部署规划如下:
hosthostnamerolenode id11.0.1.146node1Broker,Controller111.0.1.147node2Broker,Controller211.0.1.148node3Broker,Controller3
以下操作三台机器均需要执行。
配置
hosts
:
vi /etc/hosts
11.0.1.146 node1
11.0.1.147 node2
11.0.1.148 node3
下载安装包:
wget https://archive.apache.org/dist/kafka/3.4.0/kafka_2.13-3.4.0.tgz
解压:
tar-zxvf kafka_2.13-3.4.0.tgz
创建数据存储目录:
cd kafka_2.13-3.4.0
mkdir data
修改
config/kraft/server.properties
配置文件,注意
node.id
和
advertised.listeners
根据不同的机器编码填写,主要修改内容如下:
vi config/kraft/server.properties
process.roles=broker,controller
node.id=1controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://node1:9092
controller.listener.names=CONTROLLER
生成集群唯一标志
ID
,官方提供了
kafka-storage
工具可以生成唯一
ID
,也可以自己生成一个唯一的
ID
:
bin/kafka-storage.sh random-uuid
使用唯一标志
ID
初始化存储路径:
bin/kafka-storage.sh format-t cGuFZQ70Rf6OQFNMumq33g -c config/kraft/server.properties
以
KRaft
模式启动服务:
bin/kafka-server-start.sh -daemon config/kraft/server.properties
观察日志是否启动成功:
tail-f logs/server.log
三、环境测试
查看
Broker
情况:
bin/kafka-broker-api-versions.sh --bootstrap-server node1:9092,node2:9092,node3:9092
测试创建
topic
:
bin/kafka-topics.sh --create--topictest--partitions3 --replication-factor 2 --bootstrap-server node1:9092,node2:9092,node3:9092
查看
topic
的情况:
bin/kafka-topics.sh --describe --bootstrap-server node1:9092,node2:9092,node3:9092
发送
Topic
消息测试:
bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topictest
消费者消费消息:
bin/kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topictest
版权归原作者 小毕超 所有, 如有侵权,请联系我们删除。