经典烧脑故障--之山路十八弯

ok!~

没事根据自己的笔记给大家说一下处理过的比较经典的故障过程!~

那么在说明问题前,先看看大概的业务流和基础架构.

图片

涉及本次故障的模块都在上面了哈!~

干扰事件前提:

1、故障发生的前天晚上proxy一侧做了割接切换.

2、当晚凌晨3点做了整体线上环境压力测试.

事件开始:

早上9点左右,接到业务侧同事反馈交易订单无法打开,无法交易,就是我们上面的a服务和b服务!~

那么由于昨天晚上对proxy做了割接,其实这批代理割接名单中并没有故障业务先的服务,但是业务侧却偏偏最初的重点怀疑是割接出现了问题导致的.

好巧不巧大家都在路上,这个情况也延长了处理故障的时间轴.

波哥接到了电话,由于波哥当时骑个自行车在路上实在听不清,只好找个地方靠边停车,然后发现群里已经快要炸了…因为他们就是判定割接代理出了问题,但是又联系不到人.都在等消息…我的天!~

临时找了个阴凉地方坐马路边,翻出电脑,第一时间回复群中,昨晚没有割接故障域名.另外告知组员在家没动身的不要来单位.

开始处理问题.

通过kibana查看涉案域名请求返回大部分是200,其中几个404.

立刻询问运营侧,故障是否为100%?

回答是100%.

这不可能是代理的问题.

立刻反馈给业务测希望立刻协助查看应用日志.

这时技术大群里,大数据业务组反馈有两个kafka的topic消费不正常,lag数已经达到30万+.但是由于不认识这两个topic是哪个业务线的,把问题抛到了大群里.

迅速捕捉到了这个信息,联系大数据业务线进群,协同确认,1分钟,确认这两个topic跟本次故障有关系.

阶段总结:

前端代理反馈客户端请求基本都是200.

运营业务侧反馈故障率100%.这就不符合代理出现问题的现象.

迅速同步信息,应该是业务间关联或者逻辑代码出现了问题之类的.要是类似这样的情况,核心排查力量将有基础运维,变成业务研发.

还没等放松两分钟,业务研发反馈部分业务任务现在无限重启情况,consumer的pod运行失败.

图片

完了!~还得提刀上战场.

因为所有业务服务都在k8s集群上跑着,立刻定位pod运行状态.

图片

故障pod集中在了一个固定的节点.

进一步查看pod失败日志,大部分都跟网络有关系.

立刻排查calico的pod的总体状态

图片

确实该节点的calico的pod出现问题了.

那么我们都了解calico的运行原理,立刻查看该节点的iptables状态

图片

呦呵!~iptable表被锁了…

这里细节的知识点各位自行查找哈!~

我们一定要明白一个原理,节点每新增一个pod,都会在该节点的iptables增加一条规则.

然后calico会调用iptables-restore来更新iptables,这里可以查看calico项目的源码来印证.

阶段总结:

1、kafka大量消息堆积.

2、导致kafka大量堆积的一定是consumer一侧服务出现了问题.

3、consumer服务的pod拉不起来,因为网络出现问题.

4、网络出问题是因为calico的pod不正常.

5、calico的pod不正常是因为iptable 被锁了.

呦西!行吧!先解决问题,等有空了我再收拾这个问题.

立刻驱逐该节点consumer服务的pod,重新执行部署却发现依然无法拉起,因为这个业务指定了nodeSelector.而其指定的节点只有目前这一个节点还在运行中…

脑中一万匹羊驼奔跑…

图片

不行,还得解决这个节点的问题.

那么能锁iptable的一定是某些服务在频繁更改这个节点的iptables规则.

立刻查看该节点的pod运行情况,发现几个不明job的pod在无限创建.

进一步查看发现是其获取配置出现了问题.

没见过这几个pod,很奇怪,反馈给群中业务,立刻被测试组同学领走了…5分钟左右后台发现该节点job的pod消失.

iptables锁释放

重新拉起consumer正常运行!~

业务恢复正常.

故障处理完毕!~

图片

事后复盘:

1、测试同学做完压测收尾不干净.导致部分job没有被下掉,但是配置却被清除掉了.这些job就在不断的反复尝试创建.因为8点往后是业务高峰,进而引起了这起故障,这个是直接原因.

2、基础环境有几台机器故障被下掉了,正好是该业务所属的几个节点…所以变成了consumer只在这一个节点运行的局面.

3、压测同学选择运行压测运行job的节点名称有误会,内部沟通问题,导致把大量job跑到了这个consumer的节点上.

各种倒霉事遇到了一起,导致的这样的故障.

唉!都小心点呀各位老板!

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值