负载均衡中的四层负载和七层负载

文介绍负载均衡中的四层负载和七层负载。

负载均衡简介

负载均衡,英文名称为LoadBalance,其意思就是将负载(工作任务)进行平衡,分摊到多个操作单元上进行执行(例如Web服务器、FTP服务器等),实现多个服务器共同完成工作任务的目标。负载均衡建立在现有网络结构之上,它提升了服务器的性能、提高了带宽利用率,增强了网络的灵活性和可靠性。经过十年的发展,负载均衡已经成为网络应用的重要设备,甚至成为大型网络应用的核心设备,与基础路由、交换设备市场并驾齐驱。

四层负载均衡和七层负载均衡

四层负载均衡像银行自助排号机,七层负载均衡像银行大堂经理。

四层负载均衡指的是负载均衡设备通过报文中的目标IP地址和端口负载均衡算法,选择到达目的的内部服务器;七层负载均衡,也被称为“内容交换”,指的是负载均衡设备通过报文中的应用层信息(URL、HTTP头部等信息)和负载均衡算法,选择到达目的的内部服务器。

二者的区别可以举个例子形象的说明:四层负载均衡就像银行的自助排号机,每一个达到银行的客户根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会根据银行内部资源得到统一协调处理,加快客户业务办理流程。

七层应用负载的好处是使得整个网络更“智能化”。例如,在网站的运行中,用户可以通过七层的方式,将图片类的请求通过缓存技术传输到特定的图片服务器,将对文字类的请求通过压缩技术传输到特定的文字服务器。当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意方式的修改,极大提升了应用系统在网络层的灵活性。很多在后台(例如Nginx或者Apache)上部署的功能可以前移到负载均衡设备上(例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入,静态资源与动态资源的分离等)。

另外一个常常被提到功能就是安全性。在网络中常见的SYN Flood攻击中,黑客会控制众多客户端(肉鸡),使用虚假IP地址对同一目标发动SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到Denial of Service(DoS)的目的。从技术原理上也可以看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而在七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。另外负载均衡设备可以在七层层面设定多种策略,过滤SQL Injection等应用层面的特定攻击手段,进一步提高系统整体安全。

国内负载均衡技术缺少根本性突破 “浑水摸鱼”伪七层负载均衡或将逐步减少,聊到这里,大家应该都明白四层负载均衡和七层负载均衡的区别了。

七层负载均衡技术对产品的性能、算法、高可靠性和安全性有着更高的要求。而导致这种技术的差异性,更多的体现在厂商对负载均衡专有平台的开发上,具体可以概括为以下四点。

第一、七层负载的应用以HTTP协议为主,四层负载的应用以TCP为主,通过测试仪可以看出,七层负载的吞吐性能要比四层负载的吞吐性能低。七层吞吐性能严重考验着负载均衡厂商们,如果不解决这个核心问题,负载均衡设备就会成为网络的瓶颈,严重影响网络的稳定性。
第二、七层负载算法需要识别URL、Cookie和HTTP head等信息,算法计算程度更丰富,对CPU的负载要求更高,这就需要更高性能的产品。虽然目前硬件平台已经发展到多核,但是国内厂商在多核平台的应用开发上存在着较大差距,严重制约负载均衡设备多核之间计算能力的协调分配和使用。
第三、七层负载的可靠性体现在两个方面:一方面是保证服务器访问的完整性和连续性,这主要体现在七层负载均衡的会话保持技术,通过HTTP Cookie、HTTP SessionID、HTTP ServerID、HTTP 自定义头域和SSL SessionID等方式实现。另一方面是保证网络的稳定性,网络的稳定性主要通过设备关键部件的冗余设计,以及双机、集群部署方式实现。
第四、七层负载的安全性同样至关重要,因为目前负载均衡已经成为网络的核心组件,成为服务器业务连续性、完整性、可靠性的保护神。七层负载均衡的安全性需要从两个方面体现:一是系统本身的安全性,软件系统应采用自主研发,无系统漏洞和后门;二是可以提供必要的网络安全防护,减少服务器被直接攻击的威胁,这样可以减少服务器区设备串联堆叠带来的单点故障。

总结

从以上几点可以看出,七层负载均衡有着严格的定义,优势也非常明显。但是,从市场份额来看,七层负载均衡设备还是以国外厂商占据主导地位,国内能够进行自主研发的只有太一星晨等少数的几家厂商。而且,国内负载均衡厂商应用场景以链路负载为主,难以进入占据负载均衡市场70%份额、主导负载均衡技术发展的服务器负载均衡市场,更缺乏在大型数据中心及大型门户网站使用案例。

标签: none