Kafka-Kraft 模式架构部署

Posted 有趣的灵魂!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka-Kraft 模式架构部署相关的知识,希望对你有一定的参考价值。

Kafka-Kraft 模式架构部署

Kafka网址:https://kafka.apache.org/

PS:因环境原因此文档内端口都有修改!

1.去官网下载二进制包

PS:3.4.0是目前最新的版本!需要jdk1.8及以上版本启动。

[root@k8s-node1 ~]# wget https://downloads.apache.org/kafka/3.4.0/kafka_2.12-3.4.0.tgz
[root@k8s-node1 ~]# tar zxvf kafka-3.4.0-src.tgz 
[root@k8s-node1 ~]# cd kafka_2.12-3.4.0/
[root@k8s-node1 kafka_2.12-3.4.0]# ls 
bin  config  libs  LICENSE  licenses   NOTICE  site-docs 

2.修改配置文件

[root@k8s-node1 ~]# cd kafka_2.12-3.4.0/config/kraft/
[root@k8s-node1 kraft]# vim server.properties
......
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@192.168.1.10:9094,2@192.168.1.11:9094,3@192.168.1.12:9094
listeners=PLAINTEXT://192.168.12.10:9093,CONTROLLER://192.168.12.10:9094
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.1.10:9093
log.dirs=logs
  • process.roles:kafka的角色 controller相当于主、broker节点相当于从,主类似zk功能;
  • node.id:节点ID标识每台机器;
  • controller.quorum.voters:controller角色的集群IP+访问端口;
  • listeners:代理将用于创建服务器套接字的内容;
  • inter.broker.listener.name:内部角色代理名称(主从可配置PLAINTEXT,从配置CONTROLLER);
  • advertised.listeners:角色代理向外暴露的IP+端口;
  • log.dirs:数据日志文件及Kafka启动生成的UUID存储位置;

集群内配置文件示例:

PS:配置文件内是三controller,五broker;

#node1
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@192.168.1.10:9094,2@192.168.1.11:9094,3@192.168.1.12:9094
listeners=PLAINTEXT://192.168.12.10:9093,CONTROLLER://192.168.12.10:9094
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.1.10:9093
log.dirs=logs
#node2
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@192.168.1.10:9094,2@192.168.1.11:9094,3@192.168.1.12:9094
listeners=PLAINTEXT://192.168.12.11:9093,CONTROLLER://192.168.12.11:9094
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.1.11:9093
log.dirs=logs
#node3
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@192.168.1.10:9094,2@192.168.1.11:9094,3@192.168.1.12:9094
listeners=PLAINTEXT://192.168.12.12:9093,CONTROLLER://192.168.12.12:9094
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.1.12:9093
log.dirs=logs
#node4
process.roles=broker
node.id=1
controller.quorum.voters=1@192.168.1.10:9094,2@192.168.1.11:9094,3@192.168.1.12:9094
listeners=PLAINTEXT://192.168.12.13:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.1.13:9093
log.dirs=logs
#node5
process.roles=broker
node.id=1
controller.quorum.voters=1@192.168.1.10:9094,2@192.168.1.11:9094,3@192.168.1.12:9094
listeners=PLAINTEXT://192.168.12.14:9093
inter.broker.listener.name=PLAINTEXT
advertised.listeners=PLAINTEXT://192.168.1.14:9093
log.dirs=logs

3.启动

3.1 在node01执行

# 生成集群uuid
[root@k8s-node1 kafka_2.12-3.4.0]# KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

# 格式日志目录
[root@k8s-node1 kafka_2.12-3.4.0]# bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties 

3.2 在集群内剩余机器执行

# 格式日志目录
[root@k8s-node2 kafka_2.12-3.4.0]# bin/kafka-storage.sh format -t (node01生成的UUID) -c config/kraft/server.properties
[root@k8s-node3 kafka_2.12-3.4.0]# bin/kafka-storage.sh format -t (node01生成的UUID) -c config/kraft/server.properties 
[root@k8s-node4 kafka_2.12-3.4.0]# bin/kafka-storage.sh format -t (node01生成的UUID) -c config/kraft/server.properties 
[root@k8s-node5 kafka_2.12-3.4.0]# bin/kafka-storage.sh format -t (node01生成的UUID) -c config/kraft/server.properties 

3.3 启动Kafka

[root@k8s-node1 kafka_2.12-3.4.0]#  bin/kafka-server-start.sh config/kraft/server.properties
[root@k8s-node1 kafka_2.12-3.4.0]# ss -lnt| grep -E '9093|9094'
LISTEN     0      50     [::ffff:192.168.12.134]:9093                  [::]:*                  
LISTEN     0      50     [::ffff:192.168.12.134]:9094                  [::]:*

PS:9093是PLAINTEXT的端口,9094是broker的端口。

4.命令测试Kafka集群

[root@k8s-node1 kafka_2.12-3.4.0]# ./kafka-topics.sh --create --bootstrap-server 192.168.1.10:9093 --replication-factor 2 --partitions 5 --topic test

5.Kafka Map 测试访问

PS:Kafka Map是一款可视化平台软件,可参考链接自行搭建。 https://gitee.com/dushixiang/kafka-map/



以上是关于Kafka-Kraft 模式架构部署的主要内容,如果未能解决你的问题,请参考以下文章

Kafka-Kraft 模式(不依赖Zookeeper)

kafkakafka3.0-kRaft集群模式搭建

kafka2.5.0硬件集群架构图Topic主题与Partitions分区架构图

Kafka知识概况

Kafka入门 概述部署与API的简单使用

Kafka入门 概述部署与API的简单使用