今天是休息日, 中午12点接到一个电话说,应用的某个功能调用有时候正常,有时候异常,可能是网络有问题需要我协助处理。
部署的应用是spring cloud开发的,微服务架构,出问题的那个模块调用得比较少。其实电脑我都是随时背着的,但用户当前不是很着急,我就在外面吃了饭在慢慢回去看了。
1点到家,打开电脑,和开发一起排查问题的了。先来个拓扑:
这个拓扑简化抽象的的,因为问题排查基本上就是在出问题APP集群里面。出问题的那个模块,是部署在APP1和APP2上,通过某公司AD旁路接入,在某公司上面配置做硬件负载。数据流基本上就是PC1发起请求到某公司AD,AD分发给下面的pool节点池。
再附上一张开发反馈的问题截图,curl没有返回应用数据。有时候又有应用数据返回,正常的我就不贴图了。 因为curl的连接,IP和端口是AD上配置的虚拟服务。所以开发怀疑是我这边网络的问题...
这是ad上的异常的虚拟服务和节电池配置 采用的是七层负载,通过cookie来做会话保持。
结合开发说的现象,有时候可以有时候不可以,我猜测应该是不可以的时候就转发到又问题的节点去了。
于是查看节点池 这时候再看下开发发来的有问题的crul 红色这个set-cookie字段就是AD给分配的,对应节点池cookie就定位到那个问题节点了,看下了下AD节点池状态正常。我自己测试了,直接telnet问题节点的端口是通的,我的网络没问题。然后我把情况给开发说了,这些图片也发给他了。我说了一句,要不你把那个应用重启一下?过了几分钟,他告诉我重启之后就好了,具体问题明天上班再去问问开发。
总结:端到端的问题,肯定是出现在数据经过的某一个点上,一定要熟悉业务走向,根据故障现象一步一步定位发现问题即可。还有就是,重启大法好。
PS:我和我的祖国,一刻也不能分割~预备唱 |