Kafka Cached zkVersion [62] not equal to that in zookeeper, skip updating ISR (kafka.cluster.Partition) 问题分析
我司业务Kafka集群是3节点(broker分别为10,20,30),每个Topic 3 Partition,3 Repilication的配置,早上起床突然发现所有Topic的Broker节点都变为2个了,然后监控发现仍然活着的Broker个数还是3个。那这是怎么回事呢?
通过KafkaManager监控发现,每个Topic的Leader为10的Partition的ISR只有10了,20,30都消失了,而其他Partition的ISR中也都缺少了10。直觉告诉我,10这个节点实际已经被整个集群抛弃了,查看10节点的日志文件,发现日志仍然在增长,并且其他节点的信息也都在正常同步,也就是说10节点还在工作,但是对于整个集群来说,并没有认可,那么问题是什么呢?由于我们对于Kafka和ZK没有最基本的监控,所以只能通过有限的监控来判断问题发生的时间点,然后找到对应的log日志进行排查。
首先需要确认问题发生的时间点,既然kafka级别的监控不全,那么首先从主机级别的流量开始查吧:
比较幸运的是,发现16:19分左右,10节点的流量有个突变,首先是大幅降低,直至为0,然后突然暴涨,后续恢复正常,很明显是一个10节点离线,然后上线的过程。定位到这个时间点,然后去翻日志,发现20,30节点的日志出奇的类似:
10节点首先被踢出了集群,Shrinking ISR for partition [XXXXXXX,1] from 30,10,20 to 30,20
然后更新ISR的时候报错:Cached zkVersion [27] not equal to that in zookeeper, skip updating ISR (kafka.cluster.Partition)
这个基本符合我们的猜测,10节点短暂离线,然后上线后,因为20,30update ISR时判断ZKversion错误,中断更新,导致10节点只是接管了自己是Leader的那些Partition,对于20,30是Leader的那些,很遗憾,认为10一直死着。这真是一个天大的悲剧啊!
那么为什么会产生这个问题呢?通过一阵google,发现这么一篇文章:https://issues.apache.org/jira/browse/KAFKA-2729 。
Kafka-2729Bug,摘抄几个回复:
ok,我们得出几个结论,这种问题确实是Kafka与ZK连接短暂中断引起,并且这个只能通过重启Kafka节点解决,然后这个在1.1.0版本才得以修复。。。。。。
没其他办法,我们只能择日重启了10节点的kafka,问题解决。
对于升级这件事情,短期内我们是无法解决的,我们应该如何避免或者第一时间知道此类问题的发生呢?
1. 首先Kafka跟ZK的连接为什么中断呢?原因很多,比如网络闪断,比如ZK繁忙,比如ZKGC时间过长。那么我们需要加大Kafka与ZK连接的超时时间:默认6秒,我们增加到30秒。更新位置:Kafka配置文件,两个参数更新如下:
zookeeper.session.timeout.ms=30000
zookeeper.connection.timeout.ms=30000
2. 比如对Kafka,ZK建立全面的监控,结合预警,第一时间知晓问题,然后根据监控指标进行分析,而不是撞大运,人工翻日志
如何建立全面的kafka,ZK监控体系呢?别急,下篇揭晓,先上个图吧:
3. 当然是熟读源码,然后知其所以然,然后。。。。由于业务重心不在这一块,所以这个目标对我而言有点难,各位大牛如果知道此问题的前因后果,欢迎告诉小弟,感激不尽!
Kafka Cached zkVersion [62] not equal to that in zookeeper, skip updating ISR (kafka.cluster.Partition) 问题分析的更多相关文章
- kafka启动时出现FATAL Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) java.io.IOException: Permission denied错误解决办法(图文详解)
首先,说明,我kafk的server.properties是 kafka的server.properties配置文件参考示范(图文详解)(多种方式) 问题详情 然后,我启动时,出现如下 [hadoop ...
- Docker部署zookeeper集群和kafka集群,实现互联
本文介绍在单机上通过docker部署zookeeper集群和kafka集群的可操作方案. 0.准备工作 创建zk目录,在该目录下创建生成zookeeper集群和kafka集群的yml文件,以及用于在该 ...
- Kafka集群安装Version1.0.1(自带Zookeeper)
1.说明 Kafka集群安装,基于版本1.0.1, 使用kafka_2.12-1.0.1.tgz安装包, 其中2.12是编译工具Scala的版本. 而且不需要另外安装Zookeeper服务, 使用Ka ...
- tomcat,zookeeper,activeMQ,Kafka设置jvm参数
1,tomcat设置jvm参数 设置方法: 在tomcat bin 目录增加配置:setenv.sh #add tomcat pid CATALINA_PID="$CATALINA_ ...
- zookeeper链接数导致kafka storm不能正常工作
报错信息: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: org.apache ...
- CDH- cdh kafka已经卸载了,但是服务器还有kafka-topics这些命令可用,导致重新安装kafka出现问题
cdh界面删除并不会将 kafka数据删除,需要将kafka集群节点 var/local/kafka/data 清理掉 然后将zk brokers/topics 下的topic也清理掉
- 【拆分版】Docker-compose构建Zookeeper集群管理Kafka集群
写在前边 在搭建Logstash多节点之前,想到就算先搭好Logstash启动会因为日志无法连接到Kafka Brokers而无限重试,所以这里先构建下Zookeeper集群管理的Kafka集群. 众 ...
- docker 搭建zookeeper集群和kafka集群
docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...
- zookeeper集群及kafka集群搭建
1.zookeeper集群搭建 1.1 上传安装包 官网推荐至少3个节点,我们这里也用三个节点192.169.2.18 192.169.1.82 192.169.1.95 准备好安装包,zooke ...
随机推荐
- 在oracle中,group by后将字符拼接,以及自定义排序
1.在oracle中,group by后将字符拼接.任务:在学生表中,有studentid和subject两个字段.要求对studentid进行group by分组,并将所选科目拼接在一起.oracl ...
- 网络通信 --> TCP三次握手和四次挥手
TCP三次握手和四次挥手 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 一.TCP报文格式 如下图: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发 ...
- Matlab绘图基础——绘制等高线图
% 等高线矩阵的获取 C = contourc(peaks(20),3); % 获取3个等级的等高线矩阵 % 等高线图形的绘制 contour(peaks(20),10);c ...
- Matlab绘图基础——其他三维图形(绘制填充的五角星)
其他三维图形 %绘制魔方阵的三维条形图 subplot(2,2,1); bar3(magic(4)); %以三维杆图形式绘制曲线y=2sin(x) subplot(2,2,2); y=2*sin( ...
- python读取txt、csv、xml
读取txt,无需引入任何包: user_file = open('user_info.txt','r') lines = user_file.readlines() user_file.close() ...
- Java基础学习笔记二十一 多线程
多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...
- Oracle之SQL优化专题01-查看SQL执行计划的方法
在我2014年总结的"SQL Tuning 基础概述"中,其实已经介绍了一些查看SQL执行计划的方法,但是不够系统和全面,所以本次SQL优化专题,就首先要系统的介绍一下查看SQL执 ...
- Ditto在教学上的应用
Ditto在教学上的应用 我喜欢iOS和macOS生态的一个原因是,你在iphone上看到一段好文字,复制一下,到macbook中粘贴一下就可以了,这体验太爽了. 大家可能相信大家都听过这样一则笑话: ...
- 2017-2018-1 20155214&20155216 实验四:外设驱动程序设计
2017-2018-1 20155214&20155216 实验四:外设驱动程序设计 实验四外设驱动程序设计-1 实验要求: 学习资源中全课中的"hqyj.嵌入式Linux应用程序开 ...
- bzoj千题计划128:bzoj4552: [Tjoi2016&Heoi2016]排序
http://www.lydsy.com/JudgeOnline/problem.php?id=4552 二分答案 把>=mid 的数看做1,<mid 的数看做0 这样升序.降序排列相当于 ...