一个由于网络问题导致的服务无法使用——调试过程总结

欢迎和大家交流技术相关问题:

最近测试经常让我处理一个问题,就是网站服务无法使用,通过Windows跳转机,使用Chrome浏览器访问服务首页,页面什么也没有展示,使用Chrome的F12调试窗口,发现并没有和服务端SLB的任何交互请求。查看后台门户的相关进程,均正常运行。查看后台日志,没有发现明显的错误。访问SLB的页面管理系统,发现所需服务均正常注册。定位无果后所以尝试重启,不定次数重启之后,清除浏览器缓存,继续登录,发现服务又能够正常访问。但是再次重启后,问题复现。

各个服务节点,包括双机SLB节点均是混合网卡,同时绑定大网地址(10开头)和小网地址(192开头),SLB的浮动IP地址为小网地址。考虑到可能是网络问题,但是跳转机只有一台,无法通过更换跳转机的方式,查看服务是否正常,同时因为在该组网中所有服务均使用SLB进行控制,无法通过在该跳转机中访问其他服务地址确定是否是跳转机问题。

使用ping命令,发现各个服务节点与SLB节点均能正常通信,跳转机与SLB也能正常通信,但是考虑到ping命令无法指定端口,仍无法确定跳转机与SLB之间的网络正常。于是想到了古老的telnet。首先使用ifconfig查看浮动IP绑定到哪台SLB节点上,两台均没有绑定,很奇怪,通过下面的文章了解到浮动IP无法使用ifconfig命令查出,然后按照文章中的说明使用ip addr命令找到浮动IP属于两台SLB中的A节点。

从ip addr add和ifconfig的区别看linux网卡ip地址的结构:http://blog.csdn.net/dog250/article/details/5303542/

尝试在跳转机通过telnet命令(telnet 192.XXX.XXX.XXX YYYY)登陆SLB节点的A节点(为方便叙述,今后指到的SLB节点均是指其中的A节点),发现无法连接,查看SLB节点发现telnet服务未正常开启,于是根据下面的文章,开启了telnet服务。

如何启动linux的telnet服务:http://www.cnblogs.com/liuyou/archive/2011/10/17/2214498.html

之后继续尝试使用跳转机通过telnet命令登陆SLB节点,发现仍然无法连接,于是尝试使用某个服务节点用telnet去连接SLB节点,这回有提示信息,要求输入用户名,说明SLB节点的telent服务正常启动。在SLB节点尝试使用tcpdump命令进行抓包(tcpdump -i eth1 -nn port XXXX),也发现当使用服务节点telent登陆时发现有请求包,使用跳转机节点登陆时未发现请求包。由此确定是跳转机和SLB节点之间通信异常。

但是问题仍然没有彻底解决,仍然存在下面的问题:

  • 安装方式按理说能够保证各个小网见的机器的正常网路连接,为什么会出现访问异常的情况?
  • 如果是网路异常,为什么重启几次后可能恢复正常?
  • 指定端口,SLB节点和跳转机节点无法正常访问,为什么ping的时候可以正常ping通?而且可以双向ping通?

这些问题需要慢慢分析了。

注:为保护公司信息,文中的部分内容与实际情况有差异。

额外的参考链接:

原文地址:https://www.cnblogs.com/jiangxinnju/p/5751374.html