外国有没有中国代做数学作业的网站,长沙传媒公司招聘信息,制作人漫画,做建材网站怎么做文章目录 前言kafka2.0与3.x对比准备工作JDK安装kafka安装服务器增加hosts 修改Kraft协议配置文件格式化存储目录 启动集群停止集群测试Kafka集群创建topic查看topic列表查看消息详情生产消息消费消息查看消费者组查看消费者组列表 前言
相信很多同学都用过Kafka2.0吧#xf… 文章目录 前言kafka2.0与3.x对比准备工作JDK安装kafka安装服务器增加hosts 修改Kraft协议配置文件格式化存储目录 启动集群停止集群测试Kafka集群创建topic查看topic列表查看消息详情生产消息消费消息查看消费者组查看消费者组列表 前言
相信很多同学都用过Kafka2.0吧其中需要zookepper集群来做元数据管理和集群选举大大增加了运维成本而且也很是影响Kafka性能。言归正传今天我们就分享一期Kafka3.x Kraft模式集群搭建简直不要太爽。
kafka2.0与3.x对比 上图中黑色代表broker消息代理服务褐色/蓝色代表Controller(集群控制器服务) 左图kafka2.0一个集群所有节点都是broker角色kafka从三个broker中选举出来一个Controller控制器控制器将集群元数据信息比如主题分类、消费进度等保存到zookeeper用于集群各节点之间分布式交互。 右图kafka3.0假设一个集群有四个broker指定三个作为Conreoller角色(蓝色)从三个Controller中选举出来一个Controller作为主控制器褐色其他的2个备用。zookeeper不再被需要相关的元数据信息以kafka日志的形式存在即以消息队列消息的形式存在。 controller通信端口9093, 作用与zk的2181端口类似 。 这样做的好处有以下几个
Kafka 不再依赖外部框架而是能够独立运行controller 管理集群时不再需要从 zookeeper 中先读取数据集群性能上升由于不依赖 zookeeper集群扩展时不再受到 zookeeper 读写能力限制
在搭建kafka3.0集群之前, 我们需要先做好kafka实例角色规划。(三个broker, 需要通过主动配置指定三个作为Controller, Controller需要奇数个, 这一点和zk是一样的)
主机名称ip角色node.idsenfel-test192.168.112.10broker,controller1senfel-test2192.168.112.130broker,controller2senfel-test3192.168.112.129broker,controller3
准备工作
JDK安装
kafka3.x不再支持JDK8依然可用建议安装JDK11或JDK17。 新建kafka持久化日志数据mkdir -p /data/kafka;并保证安装kafka的用户具有该目录的读写权限。 各个机器节点执行 安装jdk(kafka3.x不再支持JDK8目前暂时还可以用建议安装JDK11或JDK17, 这里安装jdk11) 下载安装jdk省略 kafka安装
下载kafka
cd / mkdir tools cd tools wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz tar -xf kafka_2.12-3.5.2.tgz chown -R kafka:kafka kafka_2.12-3.5.2* mkdir -p /data/kafka chown -R kafka:kafka /data/kafka
服务器增加hosts
vim /etc/hosts各个节点添加如下内容 192.168.112.10 data-vm1 192.168.112.130 data-vm2 192.168.112.129 data-vm3
修改Kraft协议配置文件
在kafka3.x版本中使用Kraft协议代替zookeeper进行集群的Controller选举所以要针对它进行配置。 vim /tools/kafka_2.12-3.5.2/config/kraft/server.properties
具体配置参数如下
# data-vm1节点
node.id1
process.rolesbroker,controller
listenersPLAINTEXT://data-vm1:9092,CONTROLLER://data-vm1:9093
advertised.listenersPLAINTEXT://:9092
controller.quorum.voters1data-vm1:9093,2data-vm2:9093,3data-vm3:9093
log.dirs/data/kafka/
num.partitions3
offsets.topic.replication.factor3
transaction.state.log.replication.factor3
transaction.state.log.min.isr3
# data-vm2节点
node.id2
process.rolesbroker,controller
listenersPLAINTEXT://data-vm2:9092,CONTROLLER://data-vm2:9093
advertised.listenersPLAINTEXT://:9092
controller.quorum.voters1data-vm1:9093,2data-vm2:9093,3data-vm3:9093
log.dirs/data/kafka/
num.partitions3
offsets.topic.replication.factor3
transaction.state.log.replication.factor3
transaction.state.log.min.isr3# data-vm3节点
node.id3
process.rolesbroker,controller
listenersPLAINTEXT://data-vm3:9092,CONTROLLER://data-vm3:9093
advertised.listenersPLAINTEXT://:9092
controller.quorum.voters1data-vm1:9093,2data-vm2:9093,3data-vm3:9093
log.dirs/data/kafka/
num.partitions3
offsets.topic.replication.factor3
transaction.state.log.replication.factor3
transaction.state.log.min.isr3node.id这将作为集群中的节点 ID,唯一标识按照我们事先规划好的上文在不同的服务器上这个值不同。其实就是kafka2.0中的broker.id,只是在3.0版本中kafka实例不再只担任broker角色也有可能是controller角色所以改名叫做node节点。 process.roles一个节点可以充当broker或controller或两者兼而有之。按照我们事先规划好的上文在不同的服务器上这个值不同。多个角色用逗号分开。 listeners: broker将使用9092端口而kraft controller控制器将使用9093端口。 advertised.listeners: 这里指定kafka通过代理暴漏的地址如果都是局域网使用就配置PLAINTEXT://:9092即可。 controller.quorum.voters这个配置用于指定controller主控选举的投票节点所有process.roles包含controller角色的规划节点都要参与即zimug1、zimug2、zimug3。其配置格式为:node.id1host1:9093,node.id2host2:9093 log.dirskafka 将存储数据的日志目录在准备工作中创建好的目录。 num_partitions: 分区一般根据broker数量进行确定 offset.topic.replication.factor: 副本数一般根据broker数量进行确定 所有kafka节点都要按照上文中的节点规划进行配置完成config/kraft/server.properties配置文件的修改。
格式化存储目录
生成一个唯一的集群ID在一台kafka服务器上执行一次即可这一个步骤是在安装kafka2.0版本的时候不存在的。
sudo /tools/kafka_2.12-3.5.2/bin/kafka-storage.sh random-uuid MsBU_ZELT2G0E0oPFX6Gxw
使用生成的集群ID配置文件格式化存储目录log.dirs, 所以这一步确认配置及路径确实存在 并且kafka用户有访问权限检查准备工作是否做对 主机服务器执行命令: sudo /tools/kafka_2.12-3.5.2/bin/kafka-storage.sh format -t MsBU_ZELT2G0E0oPFX6Gxw -c /tools/kafka_2.12-3.5.2/config/kraft/server.properties 格式化操作完成之后log.dirs目录下多出一个Meta.properties文件存储了当前的kafka节点的id(node.id)当前节点属于哪个集群(cluster.id) [rootsenfel-test tools]# cd /data/kafka/ [rootsenfel-test kafka]# ll 总用量 8 -rw-r–r–. 1 root root 249 6月 4 15:46 bootstrap.checkpoint -rw-r–r–. 1 root root 86 6月 4 15:46 meta.properties [rootsenfel-test kafka]# cat meta.properties #Tue Jun 04 15:46:15 CST 2024 cluster.idMsBU_ZELT2G0E0oPFX6Gxw version1 node.id1 [rootsenfel-test kafka]#
senfel-test2 sudo /tools/kafka_2.12-3.5.2/bin/kafka-storage.sh format -t MsBU_ZELT2G0E0oPFX6Gxw -c /tools/kafka_2.12-3.5.2/config/kraft/server.properties [rootsenfel-test2 tools]# cd /data/kafka/ [rootsenfel-test2 kafka]# ll 总用量 8 -rw-r–r–. 1 root root 249 6月 4 15:49 bootstrap.checkpoint -rw-r–r–. 1 root root 86 6月 4 15:49 meta.properties [rootsenfel-test2 kafka]# cat meta.properties #Tue Jun 04 15:49:55 CST 2024 cluster.idN2TANgN1TDyZLAbpN36IxA version1 node.id2 [rootsenfel-test2 kafka]#
senfel-test3 sudo /tools/kafka_2.12-3.5.2/bin/kafka-storage.sh format -t MsBU_ZELT2G0E0oPFX6Gxw -c /tools/kafka_2.12-3.5.2/config/kraft/server.properties [rootsenfel-test3 /]# cd /data/kafka/ [rootsenfel-test3 kafka]# ll 总用量 8 -rw-r–r–. 1 root root 249 6月 4 15:52 bootstrap.checkpoint -rw-r–r–. 1 root root 86 6月 4 15:52 meta.properties [rootsenfel-test3 kafka]# cat meta.properties #Tue Jun 04 15:52:11 CST 2024 cluster.idKI0RD9FcQnaXNXeq49Gjuw version1 node.id3 [rootsenfel-test3 kafka]#
启动集群
有防火墙记得放行 [rootsenfel-test bin]# vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9092 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 9093 -j ACCEPT
[rootsenfel-test bin]# systemctl restart iptables
启动命令 /tools/kafka_2.12-3.5.2/bin/kafka-server-start.sh /tools/kafka_2.12-3.5.2/config/kraft/server.properties
后台运行: nohup /tools/kafka_2.12-3.5.2/bin/kafka-server-start.sh /tools/kafka_2.12-3.5.2/config/kraft/server.properties 21
脚本 vim kafka-start.sh
#!/bin/bash
kafkaServersdata-vm1 data-vm2 data-vm3
#启动所有的kafka
for kafka in $kafkaServers
dossh -T $kafka EOFnohup /tools/kafka_2.12-3.5.2/bin/kafka-server-start.sh /tools/kafka_2.12-3.5.2/config/kraft/server.properties 1/dev/null 21
EOF
echo 从节点 $kafka 启动kafka3.0...[ done ]
sleep 5
donechmod x kafka-start.sh sh kafka-start.sh
停止集群
一键停止kafka集群各节点的脚本与启动脚本的使用方式及原理是一样的。 停止命令 sudo /tools/kafka_2.12-3.5.2/bin/kafka-server-stop.sh
执行脚本
#!/bin/bash
kafkaServersdata-vm1 data-vm2 data-vm3
#停止所有的kafka
for kafka in $kafkaServers
dossh -T $kafka EOFcd /tools/kafka_2.12-3.5.2bin/kafka-server-stop.sh
EOF
echo 从节点 $kafka 停止kafka...[ done ]
sleep 5
done测试Kafka集群
创建topic
[rootsenfel-test2 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-topics.sh –create –topic senfel-test-topic –bootstrap-server data-vm1:9092
Created topic senfel-test-topic.
查看topic列表
[rootsenfel-test2 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-topics.sh –list –bootstrap-server data-vm1:9092
senfel-test-topic [rootsenfel-test2 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-topics.sh --list --bootstrap-server data-vm2:9092 senfel-test-topic [rootsenfel-test2 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-topics.sh --list --bootstrap-server data-vm3:9092 senfel-test-topic [rootsenfel-test2 logs]#
查看消息详情
[rootsenfel-test2 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-topics.sh –describe –topic senfel-test-topic –bootstrap-server data-vm1:9092
Topic: senfel-test-topic TopicId: h2Cz-yq2RYeMY3ylHuk3iw PartitionCount: 3 ReplicationFactor: 1 Configs: segment.bytes1073741824 Topic: senfel-test-topic Partition: 0 Leader: 1 Replicas: 1 Isr: 1 Topic: senfel-test-topic Partition: 1 Leader: 2 Replicas: 2 Isr: 2 Topic: senfel-test-topic Partition: 2 Leader: 3 Replicas: 3 Isr: 3
生产消息
[rootsenfel-test2 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-console-producer.sh –topic senfel-test-topic –bootstrap-server data-vm1:9092
消费消息
[rootsenfel-test3 logs]# /tools/kafka_2.12-3.5.2/bin/kafka-console-consumer.sh –topic senfel-test-topic –from-beginning –bootstrap-server data-vm2:9092 –group my-group
查看消费者组
#检查消费者postition [rootsenfel-test kafka]# sudo /tools/kafka_2.12-3.5.2/bin/kafka-consumer-groups.sh –bootstrap-server data-vm2:9092 –describe –all-groups
sudo /tools/kafka_2.12-3.5.2/bin/kafka-consumer-groups.sh –bootstrap-server data-vm2:9092 –describe –group my-group-new
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID my-group senfel-test-topic 0 2 2 0 console-consumer-490ae3b3-e944-49be-a6e7-c4bae3696a0f /192.168.112.129 console-consumer my-group senfel-test-topic 1 4 4 0 console-consumer-490ae3b3-e944-49be-a6e7-c4bae3696a0f /192.168.112.129 console-consumer my-group senfel-test-topic 2 0 0 0 console-consumer-490ae3b3-e944-49be-a6e7-c4bae3696a0f /192.168.112.129 console-consumer [rootsenfel-test kafka]#
查看消费者组列表
[rootsenfel-test kafka]# /tools/kafka_2.12-3.5.2/bin/kafka-consumer-groups.sh –bootstrap-server data-vm1:9092 –list
my-group