当前位置: 首页 > 知识库问答 >
问题:

Kafka集群增加副本因子不起作用

司空坚
2023-03-14

嗨,在执行本文档中的步骤时,我遇到了一个增加Kafka的复制因子的奇怪问题:https://kafka.apache.org/documentation/#basic_ops_increase_replication_factor

症状看起来复制因子增加根本不起作用。

请帮帮忙

我的Kafka设置是

Kafka版本:kafka_2.12-2.1.0

服务器: 主机名服务器-0 (192.168.0.1)

    < li>Kafka经纪人Id: 0 < li >Kafka港口:9092 < li>Zookeeper端口:2181

服务器:主机名server-1 (192.168.0.2)

    < li>Kafka经纪人Id: 1 < li >Kafka港口:9092 < li >服务器-1上没有动物园管理员

话题

  • 主题数量:1
  • 主题名称:数据
  • 分区数:1

DATA主题是先使用server-0中的副本因子1创建的

bin/kafka主题。sh--create--zookeeper localhost:2181--replication factor 1--partitions 1--topic DATA

结果看起来像

< code > bin/Kafka-topics . sh-zookeeper localhost:2181-describe-Topic数据主题:数据分区计数:1复制因子:1配置:主题:数据分区:0领导者:0副本:0 Isr: 0

创建主题后,我生成了一些测试消息

bin/kafka控制台生成器。sh--代理列表localhost:9092--主题DATA消息1消息2

然后,通过仅在server-0中运行命令,主题数据的副本因子增加到2

下面的 json 文件与 Kafka-reassign-partitions.sh 一起使用,以增加副本因子

{版本:1,分区:[{主题:数据,分区:0,副本:[0,1]} ] }

命令行:

< code > bin/Kafka-reassign-partitions . sh-zookeeper localhost:2181-reassign-JSON-file topics-to-expand . JSON-execute

从表面上看,通过描述主题,结果看起来不错

bin/kafka主题。sh--zookeeper localhost:2181--description--topic数据主题:数据分区计数:1复制因子:2配置:主题:数据划分:0领导者:0副本:0,1 Isr:0,1

我在这里制作了更多的测试信息。

bin/kafka-console-producer.sh --代理列表本地主机:9092 --主题数据消息 3 消息 4

然而,当我试图从server-1进行测试时,问题出现了

现在我通过以下方式杀死了server-0中的kafka进程

杀 -9 [Kafka-皮德]

当我从服务器 1 运行控制台使用者时出现问题

bin/kafka-console-consumer.sh --引导-服务器 localhost:9092 --主题 DATA --从头开始

没有消息显示,控制台只是在空白屏幕块。

我想根据文档,我应该能够看到消息,因为副本是/曾经是同步的?没有吗?

描述主题显示

bin/kafka-topics.sh --动物园管理员服务器-0:2181 --描述 --主题 数据 主题:数据分区计数:1 复制因子:2 配置: 主题: 数据分区: 0 领导者: 1 副本: 0,1 Isr: 1

然后我从server-0重启kafka进程,消费者控制台屏幕突然显示了历史中的所有消息

消息 1 消息 2 消息 3 消息 4

看起来服务器 1 中的使用者没有在本地使用服务器 1 中的任何数据,因为主题数据不会复制到服务器 1。相反,它仍然等待服务器 0 返回以提供数据。甚至服务器-1 也被标记为领导者。

任何人都可以复制我的问题吗?我想附加我的属性,但我不知道如何附加堆栈溢出中的文件,对此感到抱歉...

共有1个答案

方苗宣
2023-03-14

受到这个帖子的启发,想出了原因。

用__consumer_offsets终止节点会导致在使用者端没有消息消费

我出现上述症状的原因是因为defaultoffsets.topic.replication。factor=3但集群中只有2个代理(节点)。当Kafka首次创建__consumer_offsets主题时,它会故障回复到offsets.topic.replication。factor=1无声(牦牛)。

在属性文件中更改offsets.topic.replication.factor=2可以解决上述问题。(

 类似资料:
  • 没什么好说的, 报警消息是而不是包含对象详细信息或类似信息的消息。 问题出在哪里?

  • 我试图弄清楚如何在ionic V4中数据绑定一个离子范围。v4的使用指南对信息很少,我不断得到一个错误,“不能绑定到ngmodel,因为它不是离子范围的已知属性”。 ionic v3文档中的示例

  • 为了练习python和pygame编程,我正在创建一个太空入侵者克隆体。我使用pygame.sprite.groupcollide来检查玩家的子弹和敌人之间的碰撞,这很好。然而,我尝试过在子弹摧毁敌人后使用那种碰撞检查来增加玩家的分数。因此,我创建了两个分数类,它们有自己的图像,在子弹击中敌人后会发生变化,以便保持分数。然而,即使这两个类几乎相同,一个类的碰撞检查工作正常,而另一个类则不行。最令人

  • 我有两个MariaDB Galera群集(PROD(服务器A、B和C)和DR(服务器1、2和3)。我有从PROD群集的主组件节点(服务器A)到DR群集的主组件节点(服务器1)的标准复制(主从)配置。每个群集都可以正常地独立于其他群集运行(也就是说,如果对一个节点进行更改,则群集中的所有节点立即复制更改)。 这种配置的目的是允许我将中继日志在从机上的应用延迟一段预定的时间。不幸的是,Mariadb1

  • 我已经在集群中配置了3个kafka,我正在尝试与sping-kafka一起使用。 但是在我杀死kafka领导者后,我无法发送其他消息到队列。 我将Spring.kafka.bootstrap-servers属性设置为:“kafka-1:9092;kafka-2:9093,kafka-3:9094”以及我的主机文件中的所有名称。 Kafka0.10版 有人知道如何正确配置? 编辑 我测试过一个东西,

  • 我试图学习Akka集群下面的教程提供了这里 我已经创建了应用程序和回购是在这里。 正如教程中提到的,我已经启动了FrontEndApp 即使我在2551和2552上启动后端应用程序,上述警告消息也会不断重复。 在2551上启动后端参与者的终端日志。 最后一个日志持续重复。 在2552上启动后端参与者的终端日志。 不确定是什么原因群集节点不能检测到彼此和参与者节点与后端。 我会错过任何设置吗?