排查网络故障实践:解决负载均衡的难题

对网络问题进行故障排查往往是件棘手的任务,而负载均衡器的存在则会带来其它更为复杂的挑战。我们很难判断负载均衡器单纯是在丢弃数据包、以某种方式变更数据包还是导致网络整体延迟水平上升。不过在今天的文章中,我们将共享几项常见技巧,相信它们能帮助各位更加轻松地发现问题所在。

对于任何一种故障排查流程来讲,首先要做的肯定是检查整套实体的统计信息。然而,即使统计信息显示一切运转正常,我们仍然不能就此排除存在网络问题的可能性。接下来,我们要做的就是引入故障排查领域的中立处理手段——数据包分析。虽然目前已经有大量优秀的收费数据包分析产品可供选择,但我个人更青睐开源Wireshark。

当对包含负载均衡器的网络体系进行问题分析时,首先要解决的问题就是该负载均衡器是否处于透明模式。在透明模式下,负载均衡器会将原有客户IP作为源IP。而在非透明模式下,该负载均衡器则会利用虚拟IP地址——或者简称VIP——向服务器发送请求。一般情况下,负载均衡器大多会以非透明模式运行。

现在大家已经准备好对文件进行追踪了。在理想状态下,我们可以在下图中的每个点内设置分接器。如果不具备分接器,大家也可以利用SPAN或者交换机上的镜像端口捕捉相关流量。当然,大家也可以在防火墙以及负载均衡器上的入站与出站端口使用tcpdump。其中的关窍在于,我们必须在全部四个位置一次性捕捉数据包,从而通过四种不同的角度审视传输会话。

 

在捕捉到数据之后,大家必须从全部四个跟踪文件当中找到同时存在的单一会话。一般来讲,大家能够通过过滤器找出请求与完成的两个IP地址。不过请注意,负载均衡器是在服务器端执行NAT的,因此对客户端IP进行过滤对服务器端追踪工作并无效果。

从第四层出发则能够解决这一难题。大家可以在TCP报头当中过滤序列号。不过需要注意的是,Wireshark会在默认情况下显示相关序列号,因此我们最终可能会得到成百上千个以序列号1开头的数据包。解决问题的关键在于关闭TCP设置当中的相关序列号功能。只需要取消勾选项,过滤结果就会显示实际十位序列号,而非作为会话开头的第一位数字。在对全部四个跟踪文件进行相同序列号过滤之后,大家应该会在每个文件中找到对应的惟一数据包。

麻烦的部分在于,如果大家的负载均衡器在NAT端自行创建出了指向服务器的数据包,那么各个文件当中的序列字段将不再完全相同。在这种情况下,最理想的办法是从应用层内选择惟一字段。对于HTTP,我建议大家使用Cookie字段;而对于HTTPS,Client Hello中的Random Bytes字段则最为合适。

最后,我们终于能够捕捉到单一会话,并对该痕迹进行访问了。首先,查看丢包情况。在Wireshark Expert Analysis当中,这些数据包会被标为“Previous segment no captured(即前段未被捕捉)。”这种情况可能出现在一个或者多个跟踪文件当中,但不会是全部。举例来说,如果大家在防火墙跟踪文件的出站端而非入站端发现了来自服务器的响应,那么就会判断出该数据包被防火墙丢弃。

在丢包查找完成后,检查TCP握手以确保各TCP选项没有在路径中受到篡改。当路径中的某个对话框自行创建数据包、而非以透明化方式直接经过时,则窗口缩放与选择性应答会出现消失趋势。这两个选项对于评估数据吞吐量而言非常重要,千万不要忽略。

最后一个需要解决的问题就是在跟踪文件中寻找高时间增量。通过对四个不同检查点进行数据捕捉,大家肯定能够发现的就是延迟水平的提升。首先查看握手,并以同步请求(SYN)与同步响应(SYN/ACK)之间的时间长度作为参考基准。查看跟踪文件中指向最接近客户端的防火墙的入站请求与响应。

对于那些时间增量达到1秒甚至更高的请求/响应组合,我们需要排查整个追踪过程,直到找出显著增加延迟水平的对应端口。其是否来自CPU处于运行峰值的防火墙?还是某个未能正常追踪其NAT表的负载均衡器?当然,也可能是存在太多并发连接的服务器。排查整个追踪流程将帮助大家了解问题的出现位置,同时明确哪些位置运转正常。

在网络排查工作当中,设置数据包捕捉可能会占用大量宝贵时间,但从长久角度看、这却是一种节约时间的良好习惯。

作者:何妍 

来源:51CTO

时间: 2024-09-18 15:49:05

排查网络故障实践:解决负载均衡的难题的相关文章

Win7网络故障 怎么解决

问题描述 Win7网络故障 怎么解决 Win7 32访问设备IP,会有这样的提示:不能通过FTP连接设备IP WinXP 与Win7设置相同,不会出现这样的提示 正常访问设备 解决方案 sysdebugger win7故障 解决方案二: 你用360网络诊断一下试试."断网急救网"

Windows平台分布式架构实践:负载均衡

概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为什么那么的迫切的希望.NET跨平台呢?第一个理由是便宜,淘宝号称4万多台服务器全部运行在Linux,Linux平台下还有免费的MySql,这些都是免费的,这些省下来直接就是利润呀,做企业的成本可以降低又没有任何损失,何乐而不为呢?第二个理由是在Linux系统下还有很多非常优秀的构架(当然同样也是免费

BalanceNG 一款利用自身网络堆栈的IP负载均衡软件

BalanceNG 是一款利用自身网络堆栈和功能的IPhttp://www.aliyun.com/zixun/aggregation/13996.html">负载均衡软件.它体积小.速度快.易于使用和设置,可以运行在Linux-x86 (2.4和2.6内核分配独立)和 Solaris 10. BalanceNG 提供了持久性不同的分布法(包括:Round Robin, Random, Weighted Random, Least Session, Least Bandwidth, Hash

无线网络故障的解决攻略

  第一步:检查硬件及线路连接 你是一位无线网络用户吗?你认为组建无线网络最核心的设备是什么呢?相信绝大多数用户的答案都是无线路由器.没错,随着无线网络的迅速崛起,无线路由已然成为其中的核心枢纽,所以一旦它出现了故障问题,整个无线网络就会陷入瘫痪.那么如果故障真的出现了,我们又该如何解决,让无线网络恢复正常呢?很简单,接着按照下面介绍的四个步骤去操作,一般的无线网络故障都能轻松解决. 无线路由出现故障的首要原因就是线路连接问题,但很多用户却常常忽视这一点,也因此走了不少弯路.所以当无线网络出现故

用Carp实现故障转移和负载均衡集群

这两天在详细的看man carp文档.发现原来carp不仅仅可以实现故障转移(failover)集群,通过简单配置还是可以先本地局域网的负载均衡. carp的负载均衡使用的是arpbalance功能,从字面意思理解为使用arp的负载均衡,也就是说是属于osi7层模型的第二层--数据链路层.所以用arpbalance 只能应用于本地局域网,无法实现更高层次的balance. 其原理大致如下 两台服务器a.b,分别建立两个carp虚拟网卡a1.a2.b1.b2,其中a1.b1为一个carp组(即相同

电脑网络故障快速解决方法

  一.电脑网络故障时首先检查主板网卡 局域网中网络不通的现象是比较多的.一旦遇到类似问题,首先应该认真检查各连入设备的网卡设置是否正常.可检查有无中断号及I/O地址冲突(最好将各台机器的中断设为相同).当网络适配器的属性中出现"该设备运转正常",并且在"网络邻居"中能找到自己,说明网卡的配置是正确的. 二.确认网线和网络设备工作正常 网卡没有问题时,通过"网上邻居"来看看网络中的其他电脑.如果不通,则可能是由于网络连线中断而产生问题,可使用测线

linux系统SSH访问被拒绝网络故障的解决

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在最近碰到了网站遭遇挂黑链事件被百度惩罚,流量大幅减少之后,笔者开始真切认识到网站安全问题是重中之重,一旦被挂黑链前期的辛苦会在顷刻之间全部付诸东流.与绝大部分的站长一样,在网站建设的时候,笔者选择了windows 2003作为服务器的操作系统,最大的考虑因素是由于这个操作系统简单易用.近期在一个做IT技术的朋友建议下,我尝试着将网站&quo

利用网络测试仪器来排查网络故障

做网管常常会遇到一些棘手的问题,如网络缓慢或性能不良.这时候如果有一台网络测试仪帮助检测故障,无疑会极大地提高工作效率. 那么如何使用FLUKE公司的LANMETER网络测试仪来检测网络速度慢或性能不良? 运行网络统计(Network Stats)测试,检查高的网络利用率和异常的高碰撞率.施加少量的后台流量(每秒100帧LLC流量,每帧100个字节)后再次运行测试.如果你发现随传输 增加时碰撞或FCS错误增加,那么就应运行电缆扫描(Cable Scan). 如果碰撞的数量十分高(超过5%),则要

无线网络故障怎么解决

  使用无线网络进行组网或共享上网的用户越来越多,很多用户在使用无线网络时常常会遇到掉线的问题.那么这些问题都是如何产生的呢?我们遇到这些问题应该怎样解决呢?下面,就请广大读者跟随我们一起来看看该怎么对无线网络掉线问题进行排查与解决. 1.从软件入手 先软后硬是判断网络问题的基本准则.例如一些病毒造成的端口堵塞.网速变慢乃至掉线,可先对系统进行杀毒,看看是不是病毒原因造成的掉线. 此外,需注意在无线信号覆盖范围里面是否存在多个无线路由器或AP,一些销量较大的同厂家无线路由器会使用相同的信道(如T