现在越来越多的用户购买了负载均衡设备,但是在交流中发现很多人对负载均衡的一些指标和作用理解的并不是那么确切,这里阐述一下个人的一些理解。
1. 吞吐量
各厂家对负载均衡设备的每个型号都有标称的吞吐量,客户购买了设备后,肯定是希望设备在实际环境中能够达到标称的吞吐量。但这基本上是不可能的,原因很简单,设备的任何指标都是在最优的条件下测出的该设备所能发挥出的最大性能,就吞吐量来说,各厂家都是通过相同大小的大包来测的(传输一个大包自然比传输多个小包需要设备处理的次数少),而实际环境中,各种大小的包都有,所以实际的吞吐量肯定要打个折扣。
那么是否会有厂家宣称的吞吐量就是实际混合环境的吞吐量呢? 这基本不可能,第一,性能测试工具很难模拟出真实环境的流量,测出的值仍然跟实际不符,第二, 与商业利益不符,没有任何一个厂家会有指标的最大值不说,而却宣称一个较小的值。
那么是否真有人在实际环境中测出设备的真实性能跟宣称性能差不多呢? 这是可能的,个人分析原因也是两方面:第一,配置的应用比较单一,例如负载均衡设备配置的是简单的四层处理,而且服务器内容就是一些静态网页。第二,跟产品设计的架构有关,例如本人以前看过某厂商的一款产品,主板跟交换板之间是通过一根1G的网线相连,虽然CPU处理的能力可能是大于1Gbps的,但是根据木板理论,该款设备的性能肯定不可能大于1Gbps,由于CPU可能还有空闲处理能力,即使对于实际环境的混合流量,CPU的处理结果还是能够达到1G,瓶颈在于那根网线到底能否达到1G的传输能力,所以实际环境中我们才看到设备达到了宣称的性能。 虽然是这样,但是从产品设计角度来说,性能瓶颈应该是来自于核心处理器的处理能力而不应该是来自于交换带宽的限制,这样的设备其实是有设计缺陷的,所以只能当作1G吞吐量的设备来卖。
2. bypass
这里说的bypass是指硬件bypass,而不是有些人说的某些流量bypass到某条路由,那种只能成为策略转发,不能用bypass字眼。 首先明确范围,硬件bypass只能用于网络中处于二层不参与三层路由的设备,例如我们看到的很多的流程设备,在网络中仅仅配一个管理地址,而设备却是二层串接在网络中,对流经的流量做带宽管理,由于不参与三层路由交换,所以流控设备可以做到在设备坏掉或断电的情况下把自己当作网线一样透传流量。
负载均衡设备不存在bypass一说,因为负载均衡设备涉及到路由交换以及地址的访问,举个例子,服务器在负载均衡设备上映射的地址是1.1.1.1,所有用户访问的都是1.1.1.1,当负载均衡设备断电或坏掉,1.1.1.1这个地址在路由上就不存在了,即使bypass,用户也访问不到目的地址。同样对于所有参与路由交换的设备来说,设备断电或坏掉,那一段的路由判断和转发都没了,访问自然都断了,这不关与二层是否能连通。所以我们可以总结,网络中任何参与的是三层以上协议的设备,都不可能bypass,请正确引用bypass这个概念。
3. VIP与Real Server配置数量无限
看到有些厂家的指标中写到可配置的VIP和Real Server配置数量无限,这世界上无限的东西很多,但绝对不可能是人造出来的,人的认识是有限的,技术是有限的,这个大前提就决定了人造不出可以无限使用的东西。其实我们理解,那个指标的正确意思是配置的数量无限制,无限制不代表没有上限,但是某些客户的招标书中明确写了要求某某的配置数量达到多少,你写个无限制显然无法让人看出是否满足了客户要求,于是偷换概念写成无限,无限当然大于任何要求的指标,于是瞒天过海, 某些客户还真被蒙混过去,甚至不求甚解地问,某某的指标是无限的,你们能达到多少?资源的分配要根据实际能够配置的东西来调度,也就是你预先要有个数,没有限制,那就代表可以随便配,随便配带来的后果可能就不那么随便了,你家里目前只有够3个人吃的饭,你不问问你妈是否够吃就带了10个人来吃,客人走后你妈肯定要训斥你一顿。所以对于某些该有确定值却没有而乱称无限的,是不负责任的一种做法。
4. 负载均衡就是要提高访问速度
常有客户买负载均衡设备之前要测试一下负载均衡的处理能力,测试的结果是比较一下通过负载均衡设备访问服务器的平均响应速度是否比直接访问服务器的平均响应速度快。个人认为想法是好的,做法却是错的。负载均衡要做的是单台服务器的处理能力不够,再加几台服务器通过负载均衡设备来提高你的系统的整体处理能力。这个处理能力不能以响应速度来衡量和对比。道理很简单,我们用最简单的访问过程来对比说明。
1) 客户->服务器
2) 客户->负载均衡设备->服务器
假设服务器都空闲,客户发包给服务器的时间为1,服务器返回包给客户的时间为1,那么客户直接访问服务器的响应速度为1+1=2。有了负载均衡设备后,多了一个环节,还要加上负载均衡设备的处理和转发时间,可能这个值来回加起来为0.1,那么客户访问响应速度1+1+0.1=2.1, 这些值仅仅是个例子,实际上的处理时间应该是微秒级。不管怎样,在服务器同能空闲的情况下,多加一台设备,对于处理速度应该会有些许的影响,而不是说提高了,当然说这种影响在大家处理时间都是微秒那样的数量级下是微乎其微的。所以即使要这样测试,也是要看二者的结果是否基本一致,而不是要看速度是否提高了。正确的做法是我先测出原来单台服务器最大能并发处理多少用户多少连接数,例如2000个并发连接,超出这个值服务器就性能不够了,同时得出在这个情况下的平均响应速度,然后增加服务器,加大并发连接,看在做负载均衡的情况下总体处理能力是否随着服务器的增加而成倍增加,并且响应速度也基本保持一致。
那么负载均衡设备是否能够提高响应速度呢? 通过一些优化功能还是可以实现的,例如连接优化,HTTP压缩,SSL加速,内容缓存等,针对不同的用户需求和环境,的确是可以达到优化和加速效果的,但这跟某些用户希望简单的负载分发就提高响应速度是不同的,需要区分来理解。
当然如果说你在用负载均衡设备前由于服务器负载过大,访问很慢,而用负载均衡设备对多台服务器做了负载均衡,访问又变快了,从而说用了负载均衡设备提高了访问速度,那就对了,这正是我们要做的。
(wyl)
本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/668317