嗨,当按照本文档中的步骤操作时,我遇到了一个奇怪的问题,即增加 Kafka 的副本因子:https ://kafka.apache.org/documentation/#basic_ops_increase_replication_factor
症状看起来像复制因子增加根本不起作用。
请帮忙
我的卡夫卡设置是
卡夫卡版本:kafka_2.12-2.1.0
服务器:主机名 server-0 (192.168.0.1)
- 卡夫卡经纪人 ID:0
- 卡夫卡端口:9092
- 动物园管理员端口:2181
服务器:主机名 server-1 (192.168.0.2)
- 卡夫卡经纪人 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 中运行命令将主题 DATA 的副本因子增加到 2
下面的 json 文件与 Kafka-reassign-partitions.sh 一起使用以增加副本因子
{
"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 中附加文件,对此感到抱歉...