您的位置首页生活快答

理解nginx四层和七层负载均衡

理解nginx四层和七层负载均衡

的有关信息介绍如下:

理解nginx四层和七层负载均衡

加入了微博以后,经常听到运维老师说到四层负载均衡,当然,年轻的我也是浅显的理解,哦,要用四层负载均衡,得申请虚拟IP(VIP),得确定服务端口。可是经历一段时间,我申请负载均衡的时候,公司的运维老师又跟我说,你申请七层的吧,七层的方便管理,(内心ps:专业性有点强啊,啥是七层,四层都没搞明白呢,咋又来了个七层),“好的,老师,我在xxx后台申请是吧,咱七层的好处是?”。吧啦吧啦。。。。。运维老师说了一堆,我似懂非懂的听完恩了一声就走了,回来一想,咱得弄明白啊,不然显不出咱是高级工程师。于是网上各种搜索文章,终于找到了一篇“传道授业解惑”的文章,分享给大家。

注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。

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

以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。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. https://blog.csdn.net/azzfanke/article/details/2234301

2. https://blog.csdn.net/friends99/article/details/79803638

3. http://virtualadc.blog.51cto.com/3027116/591396