四层、七层负载均衡知识总结

四层负载和七层负载

四层
所谓四层负载均衡,主要通过报文中的目标地址和端口,再加上负载均衡设置的服务器选择的方式,决定选择的内部服务器。

以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN请求时,即通过上述方式选择一个最佳的服务器,并对报文中的目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

四层负载均衡在中间传输层执行,他处理消息的传递,但不考虑消息的内容。例如TCP是网络上HTTP流量的第四层协议。在这一过程中,四层负载均衡会将网络数据包转发到上游服务器,但不会检查数据包的内容,只能通过检查TCP流中的前几个包来做有限的路由决策。
七层
所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内存,再加上负载均衡设备的服务器选择方式,决定最终选择的内部服务器。

已常见的TCP为例,负载均衡设备如果要根据真正的应用层内存再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接收到客户端发送的真正应用内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。聚在均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端及后端的服务器会分别简历TCP连接。所以从这个技术原理上看,七层负载均衡明显对负载均衡设备的要求更高。

七层负载均衡在高级应用层上执行,会处理每个消息的实际内容。HTTP是网络上网络流量的主要7层协议。七层负载均衡比四层负载均衡更复杂的方式路由网络流量,尤其适用于基于TCP流量(如HTTP)。七层负载均衡会终止网络流量,并读取其中消息,他可以根据消息内容(如URL或cookie)做出负载均衡策略。随后,七层负载均衡与选定上游服务器建立新的TCP连接,并将请求写入服务器。

二者区别

1、七层负载均衡:基本都是基于http协议,适用于web服务器的负载均衡
2、四层负载均衡:基于TCP协议,可以做任何基于tcp/ip协议的负载均衡(haproxy, LVS)
3、二者主要区别在于利用的报文所在的层面是不同的,各有各的好处。
4、七层负载均衡的好处,是使得整个网络更“智能化”。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器,并可以利用缓存技术;将对文字类的请求转发到特定的文字服务器,并可以利用压缩技术。
从技术原理上,七层负载可以对客户端的请求和服务器的响应进行任何意义上的修改,极大的提升了应用系统在网络层的灵活性。例如nginx或apache上部署的功能可以迁移到负载均衡器上,例如客户请求中的Header重写,服务器响应中的关键字过滤或内容插入等功能。
5、四层负载均衡的优点是较为灵活,可以作为多种软件的负载均衡器。

举个例子形象的说明:四层负载均衡就像银行的自助排号机,每一个到银行的客户,根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会去不同的地方排队,加快了业务办理流程。
四层、七层负载均衡知识总结_第1张图片

优劣总结

七层相比于四层负载均衡更占CPU,但很少会导致服务器性能下降。七层负载均衡可以做出更明智的决策,并可以对内容进行优化和更改,如加密、压缩等。还可以利用buffering来卸载上游服务器的慢速连接,从而提高性能。

执行七层负载均衡的组件通常被称为翻下代理服务器。

四层和七层最大的区别就是要效率还是要功能:
四层架构简单,无需解析消息内容,在网络吞吐量及处理性能上高于七层。
而七层负载优势在于功能多,控制灵活强大。

七层可以使网络转发更智能化。

对于安全性:如DOS攻击:这种攻击会发送大量SYN报文,耗尽服务器上的资源。四层负载会把SYN攻击都转发到后端服务器上,而七层负载可以在负载层拦截,不会影响后端服务器。

七层负载均衡示例
假设用户访问高流量网站,在会话期间,他可能会请求静态内容(例如图片或视频)、动态内容(如新闻订阅源)或交易信息(如订单状态)等等。七层负载均衡允许根据请求本身中的消息(如内容类型)来路由请求,即可以把图片或视频的请求路由到存储他的服务器,并进行高度优化以提供多媒体内容;可以将诸如折扣价之类的交易信息请求路由到负责管理定价的应用服务器。借助七层负载均衡,网络和应用架构师可以创建高度优化的服务器基础架构或应用交付网络,在保证可靠性的同时进行有效扩展。

你可能感兴趣的:(企业实战系列,tcp/ip,数据库)