福建省建建设行业信用评分网站,广告设计总结,一个人可以看片,用vue做pc端网站好吗文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构#xff1a; 与旧架构的不… 文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构 与旧架构的不同点有哪些优势哪些问题 架构成员有哪些怎么规划。三节点集群安装、启动与测试 一. kafka kraft 集群介绍
1. KRaft架构 在旧的架构中 Kafka集群包含多个broker节点和一个ZooKeeper 集群。如上图集群结构4个broker节点和3个ZooKeeper节点。Kafka 集群的controller在被选中后会从 ZooKeeper 中加载它的状态。选举controller的过程是由zookeeper自动完成的。 在新的架构中 三个 controller 节点替代三个ZooKeeper节点。 controller节点和 broker 节点运行在不同的进程中。这些controller 节点中会选择一个成为Leader。新的架构中controller不会向 broker 推送更新而是 broker 从 controller Leader 拉取元数据的更新信息。 尽管 controller 进程在逻辑上与 broker 进程是分离的但它们不需要在物理上分离。即在某些情况下部分或所有 controller 进程和 broker 进程是可以是同一个进程即一个broker节点即是broker也是controller。 2. Controller 服务器
在KRaft模式下通过指定某些服务器作为控制器在Server.properties的Process.roles 参数里面配置。 不像基于ZooKeeper的模式zk去做的事情我们手动配置不了任何服务器都可以成为控制器。这带来了一个非常优秀的好处即如果我们认为 controller 节点的负载会比其他只当做broker节点高那么可以为 controller 节点使用高配的机器。这就解决了在1.0, 2.0架构中 controller 节点会比其他节点负载高却无法控制哪些节点能成为 controller 节点的问题。 被手动配置选中的 controller 节点将参与元数据集群的选举。对于当前的 controller 节点每个控制器服务器要么是Active的要么是Standby的。
用户通常会选择3或5台(奇数台)服务器成为 controller 节点3和5的个数问题和Raft的原理一样少数服从多数。 就像使用ZooKeeper一样为了保持可用性你必须让大部分 controller 保持active状态。如果你有3个controller你可以容忍1个故障在5个控制器中您可以容忍2个故障。 3. Process Roles
在KRaft模式下每个Kafka服务器都有一个新的配置项叫做process.roles, 这个参数可以有以下值: 如果process.roles broker, 服务器在KRaft模式中充当 broker。如果process.roles controller, 服务器在KRaft模式下充当 controller。如果process.roles broker,controller服务器在KRaft模式中同时充当 broker 和controller。 注意如果process.roles 没有设置。那么集群就假定是运行在ZooKeeper模式下。 对于简单的场景组合节点更容易运行和部署可以避免多进程运行时JVM带来的相关的固定内存开销。但controller将较少地与系统的其余部分隔离。例如如果代理上的活动导致内存不足controller也会受到例如OOM的影响。 4. Quorum Voters
系统中的所有节点都必须设置 controller.quorum.voters 配置。用于配置所有想成为controller的节点。 如果你有10个broker和 3个controller1分别命名为controller1、controller2、controller3你可能在 controller1上有以下配置:
process.rolescontroller
node.id1
listenersCONTROLLER://controller1.example.com:9093
controller.quorum.voters1controller1.com:9093,2controller2.com:9093,3controller3.com:9093controller.quorum.voters配置格式说明nodeid1controller-node1:9093,nodeid2controller-node2:9093,nodeid3controller-node3:9093 如果你只有三个节点每个节点都是controllerbroker角色那么每个节点都这样配置
process.rolesbroker,controller
listenersCONTROLLER://controller1.example.com:9093
controller.quorum.voters1controller1.com:9093,2controller2.com:9093,3controller3.com:90935. kraft的工作原理 ing
KRaft: Apache Kafka Without ZooKeeper 二. 集群安装
进行三个节点的安装如下规划
节点node.id角色node11controller,brokernode22controller,brokernode33controller,broker
1. 安装
kafka下载: https://kafka.apache.org/downloads 解压
tar -zxvf kafka_2.13-3.0.0.tgz1.1. 配置
在node1中配置server.properties
在{KAFKA_HOME}/config/kraft/server.properties
############################# Server Basics #############################java.home/opt/jvm/java# The role of this server. Setting this puts us in KRaft mode
process.rolesbroker,controller# The node id associated with this instances roles
node.id{{broker_id}}# The connect string for the controller quorum
# 每个节点配置都一样格式{{broker_id_1}}{{hostname1}}:9093,{{broker_id_2}}{{hostname2}}:9093,{{broker_id_3}}{{hostname3}}:9093
controller.quorum.voters{{voters}}############################# Log Basics ############################## A comma separated list of directories under which to store log files
# 数据存储目录
log.dirs/opt/kafka3.5.0/logs配置node2、node3其余两个节点配置除了node.id不同其他配置都相同。node.id配置如上节点规划。 1.2. 格式化
生成集群 ID
整个集群唯一的ID标志
$ ./bin/kafka-storage.sh random-uuid
qGuAL6YzRyWQdzt4cQTZgA格式化存储目录
使用上面生成集群 uuid, 在三个节点上都执行格式化存储目录命令
$ ./bin/kafka-storage.sh format \
-t xtzWWN4bTjitpL3kfd9s5g \
-c ./config/kraft/server.properties2. 启动测试
2.1. 启功节点服务
在每个节点上执行
$ ./bin/kafka-server-start.sh ./config/kraft/server.properties2.2. 测试
# 创建topic
$ bin/kafka-topics.sh --create \
--topic quickstart-events \
--bootstrap-server localhost:9092# 查看topic信息
$ bin/kafka-topics.sh --describe \
--topic quickstart-events \
--bootstrap-server localhost:9092Topic: quickstart-events TopicId: NPmZHyhbR9y00wMglMH2sg PartitionCount: 1 ReplicationFactor: 1 Configs:Topic: quickstart-events Partition: 0 Leader: 0 Replicas: 0 Isr: 0# 生产消息
$ bin/kafka-console-producer.sh \
--topic quickstart-events \
--bootstrap-server localhost:9092This is my first event
This is my second event#消费数据
$ bin/kafka-console-consumer.sh \
--topic quickstart-events \
--from-beginning --bootstrap-server localhost:9092This is my first event
This is my second event