Kafka报错under-replicated partitions

1 under-replicated partitions异常原因

Kafka报错under replicated partitions意味着某些分区的副本数量未达到预期的复制因子。

主要有两种原因,

  • Broker故障

    如果某个Kafka Broker发生故障,导致其中一些分区的副本不再可用,那么这些分区就会被标记为"under-replicated"

  • 副本分配策略

    在Kafka集群中,副本分配策略(replica assignment)可能导致某些分区的副本分布不均衡。例如,如果你添加或删除了Broker,并且未正确调整副本分配策略,就可能导致副本分布不均匀,从而产生"under-replicated partitions"错误

bash 复制代码
$ ./bin/kafka-topics.sh --describe --topic recording --bootstrap-server my-bootstrap:9092
Topic: recording TopicId: lc5n53IzQJaxMRUpafyjlA PartitionCount: 199 ReplicationFactor: 3    Configs: compression.type=lz4,cleanup.policy=delete,retention.ms=172800000,message.format.version=2.8-IV1
    ...
    Topic: recording Partition: 182  Leader: 2   Replicas: 2,1,0 Isr: 2,0,1
    Topic: recording Partition: 183  Leader: 2   Replicas: 1,2,0 Isr: 2
    Topic: recording Partition: 184  Leader: 0   Replicas: 0,1,2 Isr: 2,0,1

上面recording下面的Partition: 183就少了两个处于同步状态的副本集合(ISR:In-Sync Replicas),因此会有under-replicated告警。

2 修复方法

一般来说,我们通过下面的步骤就能恢复,

  1. 重启leader zookeeper
  2. 重启缺少对应副本集合的kafka

这又有另一个问题,如何确定哪个zk实例是leader呢?我们可以连接到zk,通过命令查询。

因为我的kafka集群是通过k8s部署的,因此需要进入pod,查询到端口,然后再执行命令,

bash 复制代码
localhost $ kubectl exec -it zookeeper-0 -- /bin/sh
sh-4.4$ netstat -ntlp | grep "127.0.0.1"
tcp6       0      0 127.0.0.1:12181         :::*                    LISTEN      78/java
sh-4.4$ echo srvr | nc localhost 12181 | grep Mode
Mode: follower

可见该zk节点并不是leader, 而是follower。


参考文档:

  1. https://stackoverflow.com/questions/51491152/fixing-under-replicated-partitions-in-kafka
  2. https://stackoverflow.com/questions/48924122/how-to-check-which-zookeeper-instance-is-the-leader-within-an-ensemble
相关推荐
鱼跃鹰飞15 小时前
面试题:Kafka的零拷贝的底层实现是什么?是MMAP还是sendFile还是其他的?
分布式·kafka·系统架构
Jackyzhe16 小时前
Flink源码阅读:Kafka Connector
大数据·flink·kafka
Lonely丶墨轩16 小时前
Kafka消费者与文档处理系统技术文档
kafka
indexsunny17 小时前
互联网大厂Java求职面试实战:Spring Boot微服务与Kafka消息队列场景解析
java·spring boot·面试·kafka·microservices·interview·distributed systems
重生之绝世牛码3 天前
Linux软件安装 —— kafka集群安装(SASL密码验证)
大数据·linux·运维·服务器·分布式·kafka·软件安装
谷新龙0013 天前
kafka工作原理
kafka
这儿有个昵称3 天前
Java面试场景:从音视频到微服务的技术深挖
java·spring boot·spring cloud·微服务·面试·kafka·音视频
小宋10213 天前
Kafka 自动发送消息 Demo 实战:从配置到发送的完整流程(java)
java·分布式·kafka
lhyzws3 天前
CENTOS上的网络安全工具(三十四) Portainer Kafka-Clickhouse部署(3) 连接kafka和clickhouse
clickhouse·kafka·centos
这儿有个昵称3 天前
互联网大厂Java面试场景:从Spring框架到微服务架构的提问解析
java·spring boot·微服务·kafka·grafana·prometheus·数据库优化