当前位置: 首页 > news >正文

Kafka报错under-replicated partitions

1 under-replicated partitions异常原因

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

主要有两种原因,

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

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

$ ./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,1Topic: recording Partition: 183  Leader: 2   Replicas: 1,2,0 Isr: 2Topic: 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,查询到端口,然后再执行命令,

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
http://www.lryc.cn/news/249981.html

相关文章:

  • 【Python基础】字符集与字符编码
  • C# AES-128-CBC 加密
  • 【惊喜福利】Docker容器化部署nextcloud网盘,享受高速稳定的文件共享体验!
  • WPF实战项目十九(客户端):修改RestSharp的引用
  • kobs-ng 烧写nand中的uboot
  • 【Java】扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问该用户是否要删除该文件
  • PyQt基础_008_ 按钮类控件QSpinbox
  • 3D点云目标检测:VoxelNex解读
  • opencv-利用DeepLabV3+模型进行图像分割去除输入图像的背景
  • 中国版的 GPTs:InsCode AI 生成应用
  • MySQL 学习笔记(刷题篇)
  • windows系统如何配置yarn环境变量
  • 视频中的文字水印怎么去除?这三招学会轻松去视频水印
  • Java项目学生管理系统二查询所有
  • 27.Spring如何避免在并发下获取不完整的Bean?
  • 浅析SD-WAN企业组网部署中简化网络运维的关键技术
  • 【Rust】快速教程——自定义类型、数字转枚举、Cargo运行
  • python 实现 AIGC 大语言模型中的概率论:生日相同问题的代码场景模拟
  • SD-WAN组网中的CPE及云服务CPE部署方法
  • 理解BatchNormalization层的作用
  • uniapp实现文件预览过程
  • 深度学习-学习笔记记录
  • 程序员养生之道:延寿不忘初心——延寿必备
  • 使用Docker安装部署Swagger Editor并远程访问编辑API文档
  • Nacos 2.X核心架构源码剖析
  • C语言--每日选择题--Day31
  • chrome vue devTools安装
  • Spring Security 6.x 系列(7)—— 源码分析之Builder设计模式
  • PyQt6 中自定义浮点型滑块类
  • 笔记,B+树