负载均衡故障排错指南-1

www.net130.com     日期:2011-10-17    浏览次数:
出处:ADC技术博客

1 写在前面的话
从应用处理的角度来看,负载均衡工作于客户端和应用服务之间。从网络协议的角度来看,客户端工作在网络层和应用层之间。网络上专门针对负载均衡的故障排错的文章非常少,而一般网络故障或应用问题的故障排查方法对于负载均衡来说并不太适用。
一般来说,配置一个设备比较容易,但是要排查故障却很难,这不仅要求工程师要对设备本身的配置和管理非常熟悉,而且要求工程师要熟练掌握相关的协议、应用的处理流程等等。因此,本文希望能够系统的介绍负载均衡的故障排查的方式和方法。
笔者将通过一系列文章,从常用的调试工具入手,带领大家了解在增加了负载均衡之后,TCP/IP、HTTP等协议的处理发生了哪些变化。有了理论基础,我将结合具体的负载均衡产品,介绍常见的故障调试命令,带领大家了解负载均衡的具体工作状态。最后,我将介绍一些在我在实际环境中经常遇到的实际案例,与大家分享我在负载均衡排查时的经验。
 
2 工具篇
“工欲善其事,必先利其器。”在正式介绍负载均衡的故障排错技术之前,我想先给大家上几碟开胃的小菜——和大家分享几个我常用的故障排查的工具。这些工具不仅是我们进行故障排错的好帮手,而且还能够帮助我们更好的理解协议及应用实现的细节。
2.1 协议分析利器——Wireshark
Wireshark是我最喜欢的一个网络数据包捕获工具了。首先,它是一款开源软件,通过这个工具,我们可以了解应用数据是如何在客户端和服务器之间进行交互和传输的。在这个工具之前,我们只有一些商业的软件可以选择,如Sniffer Pro、EtherPeek等。其次,这个软件支持多种平台,如:Windows、Linux/Unix、Sun Solaris、Mac OSX等。
Wireshark的前身叫做Ethereal。现在的最新稳定版本是v1.6.0。可以直接从该软件的官方网站上直接下载,根据Windows操作系统的版本选择32-bit或64-bit版本:
http://www.wireshark.org/download.html
本文不想成为Wireshark的一个中文化手册,有关Wireshark的安装、使用的详细说明,请参考Wireshark的官方网站,官网上有大量的详细介绍和说明文档。在这里只介绍我常用的几个小技巧。
2.1.1 定制监控窗口界面
在我看来,Wireshark相较于早先的Ethereal来说,最大的改善就是实现了数据包的实时监控和分析。早先的版本无法在抓包的同时实时的分析数据包,这对于故障排错是非常痛苦的。
主窗口的三个主要部分分别是:数据流监控面板(上)、数据包解析面板(左下)和数据包原始格式显示面板(右下)。由于我对Wireshark的显示格式进行了调整,你看到的Wireshark的显示格式可能和我的不一样。我们可以根据仔细的喜好,在菜单的 “Edit ->Preferences”中对显示的内容和排版格式进行调整。如:数据流监控面板中增加新的列(在我的调整中,我增加了源端口和目的端口这两列)。

 


 
2.1.2 根据L4 Session追踪数据流
在使用Wireshark进行排错的过程中,我们捕获的数据包可能包含众多的会话或协议类型,但实际上我们只是针对其中某些数据流感兴趣。因此,我们需要将这些会话单独过滤出来,以便于我们进行进一步的分析。这时候,我们只需要在我们感兴趣的数据流中的某一个包上点击鼠标右键,然后在弹出菜单中选择“Conversation Filter –> TCP”,我们就完成了对这个TCP会话的过滤。这个会话有固定的源地址、源端口、目的地址和目的端口。
 


 
2.1.3 巧妙利用过滤条件
实际上,上面的追踪数据流的的菜单,只是Wireshark众多已经定制好的过滤条件中的一个。当你执行这个会话过滤后,你会在菜单栏下方的“Filter”中,看到你的过滤条件。
 


当然,如果你能够熟练的利用这些过滤条件,那么你对Wireshark的掌控以及对协议的了解一定是达到的一个新的高度。在这些过滤条件中,我们可以指定我们所要过滤的协议类型甚至是某个协议中符合特定要求的数据包类型。比如:我们可以指定仅过滤所有的TCP中的SYN-ACK数据包,我们的过滤条件可以设为: tcp.flags==0x12。有兴趣的朋友可以亲自试验一下。
 


 
2.1.4 协议分析面板
在我的工程师生涯中,我一直到毕业后的若干年,我才真正领悟的什么叫做协议分层、协议封装。而引领我获得这些知识的,正是这些协议嗅探工具的协议分析功能(或者叫专家系统、协议分析)。通过这个功能,让我真正了解了协议交互的细节。
 


如上图,是一个数据包的TCP协议分析详情,让我们看看我们能从这个数据包中读出一些什么信息:
首先,是这个TCP会话中的数据包,TCP头部大小为32bytes
其次,从源端口、目的端口来看,这个可能是SSL应用(443端口)
第三,这是一个TCP的SYN数据包
第四,Windows Size为8192

第五,MSS (Maximum Segment Size) 为1460bytes

当然,通过分析这些交互的数据包,你可以分析出更多的信息。
 
好了,有关Wireshark的一些简单应用方法,我们就先介绍到这里。在后面的篇章中,我们还要经常使用这个软件来帮助我们进行协议分析。
在下一节中,我将为大家介绍两款HTTP协议分析的利器 HttpWatch和HttpFox。

 

分享道
相关新闻