集群正常, kafka消费者提交offse却报异常: Messages are written to the log, but to fewer in-sync replicas than required.

Healer 发表于: 2021-12-22   最后更新时间: 2021-12-22 11:35:14   2,607 游览

我的kafka集群有5个broker, 正常运行, 但是消费者提交offset却异常:

Messages are written to the log, but to fewer in-sync replicas than required.

(kafka服务端版本:0.10.0.0, 客户端整合springboot, spring-kafka版本为2.2.8.RELEASE)

异常信息:

Messages are written to the log, but to fewer in-sync replicas than required

发表于 2021-12-22
添加评论

如果没有满足可用的min.insync.replicas,并且生产者使用ack=all,那么消息就不会被提交,消费者也不会收到该消息,即使在崩溃的replicas回来并再次被添加到ISR列表中。你可以通过以下方式来测试。

启动2个kafka节点,设置min.insync.replicas = 2

$ ./bin/kafka-server-start.sh ./config/server-1.properties
$ ./bin/kafka-server-start.sh ./config/server-2.properties

创建一个有1个分区和RF=2的topic。确保两个broker节点都在ISR列表中。

$ ./bin/kafka-topics.sh --zookeeper zookeeper-1 --create --topic topic1 --partitions 1 --replication-factor 2
Created topic "topic1".
$ ./bin/kafka-topics.sh --zookeeper zookeeper-1 --describe --topic topic1
Topic:topic1    PartitionCount:1    ReplicationFactor:2 Configs:
        Topic: topic1   Partition: 0    Leader: 1   Replicas: 1,2   Isr: 1,2

运行消费者和生产者。确保生产者使用`ack=-1'。

$ ./bin/kafka-console-consumer.sh --new-consumer --bootstrap-server kafka-1:9092,kafka-2:9092 --topic topic1
$ ./bin/kafka-console-producer.sh --broker-list kafka-1:9092,kafka-2:9092 --topic topic1 --request-required-acks -1

生成一些信息。消费者应该收到它们。

杀死其中一个broker节点(我杀了id=2的broker)。检查ISR列表是否减少到一个broker节点。

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

尝试再次生产,在生产者中,你应该报如下错误

Error: NOT_ENOUGH_REPLICAS

(每次重试一个),最后是

Messages are rejected since there are fewer in-sync replicas than required.

消费者将不会收到这些信息。

重新启动被杀死的broker,并尝试再次生产。消费者也会收到这些信息,但不会收到你在其中一个副本关闭时发送的信息。

Healer -> 半兽人 2年前

可能是我没表述清楚: 集群5个broker, min.insync.replicas=2, 集群所有broker都是正常的, 并且, 生产者正常生产消息, 但是消费者却抛出如题所示异常

半兽人 -> Healer 2年前

原因就是上面的,你describe一下就知道了。

你的topic活跃副本数对吗,不能你说正常就正常,贴数据我才知道正不正常。

Healer -> 半兽人 2年前

配置跟数据都没有任何问题, 所以会抛出上面的异常信息才觉得奇怪...
isr配置
partition信息

你的答案

查看kafka相关的其他问题或提一个您自己的问题