【问题标题】:Kafka cluster increasing replica factor doesn't workKafka集群增加副本因子不起作用
【发布时间】:2019-05-02 02:05:27
【问题描述】:

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

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

请帮忙

我的 Kafka 设置是

卡夫卡版本:kafka_2.12-2.1.0

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

  • Kafka 代理 ID:0
  • 卡夫卡端口:9092
  • 动物园管理员端口:2181

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

  • Kafka 代理 ID:1
  • 卡夫卡端口:9092
  • server-1 上没有 Zookeeper

主题

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

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

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic DATA

结果看起来像

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic DATA Topic:DATA PartitionCount:1 ReplicationFactor:1 Configs: Topic: DATA Partition: 0 Leader: 0 Replicas: 0 Isr: 0

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

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic DATA message 1 message 2

然后只在 server-0 中运行命令,将 topic DATA 的副本因子增加到 2

下面的json文件与Kafka-reassign-partitions.sh一起使用来增加replica-factor

{ "version":1, "partitions":[ {"topic":"DATA","partition":0,"replicas":[0,1]} ] }

命令行:

bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 --reassignment-json-file topics-to-expand.json --execute

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

bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic DATA Topic:DATA PartitionCount:1 ReplicationFactor:2 Configs: Topic: DATA Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1

我在这里生成了更多测试消息

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic DATA message 3 message 4

但是当我尝试从 server-1 测试时出现问题

现在我通过

从 server-0 杀死了 kafka 进程

kill -9 [kafka-pid]

当我从 server-1 运行控制台消费者时会出现问题

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic DATA --from-beginning

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

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

描述主题节目

bin/kafka-topics.sh --zookeeper server-0:2181 --describe --topic DATA Topic:DATA PartitionCount:1 ReplicationFactor:2 Configs: Topic: DATA Partition: 0 Leader: 1 Replicas: 0,1 Isr: 1

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

message 1 message 2 message 3 message 4

看起来 server-1 的消费者没有在本地消费 server-1 的任何数据,因为主题数据没有复制到 server-1。相反,它仍然等待 server-0 恢复提供数据。甚至 server-1 也被标记为领导者。

谁能复制我的问题? 我想附加我的属性,但我不知道如何在 stackoverflow 中附加文件,对此感到抱歉...

【问题讨论】:

  • server-1 在哪里运行?看起来你正试图在 localhost:9092 上运行两者?
  • server-0 和 server-1 是两个独立的 amazon ec 实例,您可以将它们视为 192.168.0.1 和 192.168.0.2。 Kafka 进程在准系统服务器上运行,不涉及 docker 容器。
  • 你真的不应该立即kill -9任何进程...只需kill pid优雅地关闭它,如果它没有停止,那么-9它

标签: apache-kafka kafka-cluster


【解决方案1】:

受到这篇文章的启发并找出原因。

Killing node with __consumer_offsets leads to no message consumption at consumers

我出现上述症状的原因是因为默认 offsets.topic.replication.factor=3 但我在集群中只有 2 个代理(节点)。当 Kafka 首次创建 __consumer_offsets 主题时,它会以静默方式返回 offsets.topic.replication.factor=1(牦牛)。

在属性文件中更改offsets.topic.replication.factor=2 可以解决上述问题。 (是的,经过测试!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多