先提下咱们所说的四层,七层,你们都知道咱们网络七层协议(OSI):7:应用层、6:表示层、5:会话层、4:传输层、3:网络层、2:数据链路层、1:物理层。 前端
应用层(Application Layer) 程序员
与其它计算机进行通信的一个应用,它是对应应用程序的通讯服务的。例如,一个没有通讯功能的字处理程序就不能执行通讯的代码,从事字处理工 做的程序员也不关心OSI的第7层。可是,若是添加了一个传输文件的选项,那么字处理器的程序员就须要实现OSI的第7层。示 例:telnet,HTTP,FTP,NFS,SMTP等。 后端
表示层(Presentation Layer) 浏览器
这一层的主要功能是定义数据格式及加密。例如,FTP容许你选择以二进制或ASCII格式传输。若是选择二进制,那么发送方和接收方不改变 文件的内容。若是选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机 的字符集。示例:加密,ASCII等。 缓存
会话层(Session Layer) 安全
它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时能够通知应用,从而使表示层看到的数据是连续的,在某些状况下,若是表示层收到了全部的数据,则用数据表明表示层。示例:RPC,SQL等。 服务器
传输层(Transport Layer) 网络
这层的功能包括是否选择差错恢复协议仍是无差错恢复协议,及在同一主机上对不一样应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的从新排序功能。示例:TCP,UDP,SPX。 负载均衡
网络层(Network Layer) 学习
这层对端到端的包传输进行定义,它定义了可以标识全部结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。
数据链路层(Data Link Layer)
它定义了在单个链路上如何传输数据。这些协议与被讨论的各类介质有关。示例:ATM,FDDI等。
物理层(Physical Layer)
OSI的物理层规范是有关传输介质的特性标准,这些规范一般也参考了其余组织制定的标准。链接头、帧、帧的使用、电流、编码及光调制等都属于各类物理层规范中的内容。物理层经常使用多个规范完成对全部细节的定义。示例:Rj45,802.3等。
简单了解了网络协议七层结构以后咱们在简单看了解四层和七层负载均衡。
顾名思义:
L4 switch(四层交换)负载均衡:即在OSI第四层工做,就是传输层。即基于IP+端口的负载均衡,如LVS,F5。其实还有基于MAC地址的二层负载 均衡和基于IP地址的三层负载均衡。换句话说,二层负载均衡会经过一个虚拟的MAC地址接收请求,而后分配到真是的MAC地址;三层负载均衡会经过一个虚 拟IP地址接收请求,而后再分配到真实的IP地址;四层经过虚拟IP+端口接收请求,而后再分配到真实的服务器;七层经过虚拟的URL或主机名接收请求, 而后再分配到真实的服务器。
L7 switch(七层交换)负载均衡:OSI的最高层,应用层。如haproxy,MySQL Proxy。即基于URL等应用层信息的负载均衡。
所谓的4、七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。 好比四层的负载均衡,就是经过发布三层的IP地址(VIP),而后加四层的端口号,来决定哪些流量须要作负载均衡,对须要处理的流量进行NAT处理,转发 至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个链接的全部流量都一样转发到同一台服务器处理。七层的负载均衡,就是在 四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,好比同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否须要处理的流 量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,若是你的Web服务器分红两组,一组是中文语言的,一组是英文语言的, 那么七层负载均衡就能够当用户来访问你的域名时,自动辨别用户语言,而后选择对应的语言服务器组进行负载均衡处理。
负载均衡器一般称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡之外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。
第一,技术原理上的区别。
所谓四层负载均衡,也就是主要经过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即经过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改成后端服务器IP),直接转发给该服务器。TCP的链接创建,即三次握 手是客户端和服务器直接创建的,负载均衡设备只是起到一个相似路由器的转发动做。在某些部署状况下,为保证服务器回包能够正确返回给负载均衡设备,在转发 报文的同时可能还会对报文原来的源地址进行修改。
所谓七层负载均衡,也称为“内容交换”,也就是主要经过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
以常见的TCP为例,负载均衡设备若是要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端创建链接(三次握手)后,才可能接 受到客户端发送的真正应用层内容的报文,而后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设 备在这种状况下,更相似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别创建TCP链接。因此从这个技术原理上来看,七层负载均衡明显的 对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。
第二,应用场景的需求。
七层应用负载的好处,是使得整个网络更"智能化"。例如访问一个网站的用户流量,能够经过七层的方式,将对 图片类的请求转发到特定的图片服务器并可使用缓存技术;将对文字类的请求能够转发到特定的文字服务器并可使用压缩技术。固然这只是七层应用的一个小案 例,从技术原理上,这种方式能够对客户端的请求和服务器的响应进行任意意义上的修改,极大的提高了应用系统在网络层的灵活性。不少在后台,例如Nginx 或者Apache上部署的功能能够前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。
另一个经常被提到功能就是安全性。网络中最多见的SYN Flood攻击,即黑客控制众多源客户端,使用虚假IP地址对同一目标发送SYN攻击,一般这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到Denial of Service(DoS) 的目的。从技术原理上也能够看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而七层模式下这些SYN攻击天然在负载均衡设备上就截止,不会影 响后台服务器的正常运营。另外负载均衡设备能够在七层层面设定多种策略,过滤特定报文,例如SQL Injection等应用层面的特定攻击手段,从应用 层面进一步提升系统总体安全。
如今的7层负载均衡,主要仍是着重于应用HTTP协议,因此其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 4层负载均衡则对应其余TCP应用,例如基于C/S开发的ERP等系统。
1:是否真的必要,七层应用的确能够提升流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。在设计系统时须要考虑四层七层同时应用的混杂状况。
2:是否真的能够提升安全性。例如SYN Flood攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备自己要有强大的抗DDoS能力,不然即便服务器正常而做为中枢调度的负载均衡设备故障也会致使整个应用的崩溃。
3:是否有足够的灵活度。七层应用的优点是可让整个应用的流量智能化,可是负载均衡设备须要提供完善的七 层功能,知足客户根据不一样状况的基于应用的调度。最简单的一个考核就是可否取代后台Nginx或者Apache等服务器上的调度功能。可以提供一个七层应 用开发接口的负载均衡设备,可让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。
部分摘自:http://kb.cnblogs.com/page/188170/