预计阅读本页时间:-
7.1.9 四、七层负载均衡工作流程对比
按照七层网络协议栈的层划分,负载均衡设备可以划分为四层负载均衡和七层负载均衡。其中,四层负载均衡是基于IP+端口的,它能够对报文按IP进行分发,七层负载均衡是基于URL地址的服务器负载均衡,它能够针对七层报文内容进行解析,并根据其中的URL关键字进行逐包转发,比较常见的功能就是我们所说的“动静分离”(即将静态内容,如JPG、HTML、CSS和JS文件分发到Nginx服务器处理,PHP或JSP动态文件分发到Apache服务器或Tomcat服务器处理)。四层负载均衡的典型代表是LVS,七层负载均衡的典型代表是Nginx和HAProxy(另注:HAProxy既可以做四层均衡设备,又可以做七层负载均衡设备)。
下面以常见的LVS/DR模式来举例说明四层负载均衡的工作流程,如图7-3所示。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
图7-3 LVS/DR四层负载均衡工作流程
如图7-3所示,LVS/DR四层负载均衡工作流程如下:
1)客户机向负载均衡设备发出请求,源地址为客户机的IP地址,目的地地址为整个集群的VIP地址。
2)交换机转发客户机的请求。
3)LVS负载均衡服务器利用自带的算法(一般是wrr或wlc)进行算法调度,将请求转到后端的某一台真实的Web服务器。
4)此时请求报文的源地址仍为客户机的IP地址,目的地地址为集群VIP地址,但MAC地址被LVS负载均衡服务器更改为后端的真实服务器MAC地址。
5)后端的真实服务器发出响应,源地址为集群VIP地址,目的地地址为客户端IP地址,不通过LVS负载均衡服务器(报文仍然要经过交换机)直接与客户机发生联系,回应客户机最初发出的HTTP请求。
下面以常用的Nginx负载均衡设备来举例说明七层负载均衡的工作流程,如图7-4所示。
如图7-4所示,七层负载均衡工作流程如下:
图7-4 七层负载均衡工作流程
1)客户机向Nginx负载均衡设备发送请求,建立TCP连接,源地址为客户端IP地址,目的地地址为集群VIP地址。
2)Nginx均衡设备利用自带的算法(如wrr、ip_hash等)进行调度,建立TCP连接,将客户机的请求发送到后面的某一台真实的Web服务器上面,此时源地址为客户机IP地址,目的地地址为某台真实服务器的IP地址。
3)Nginx负载均衡设备向后端的某台真实服务器发出请求。
4)真实Web服务器端发出响应,此时源地址为真实服务器IP地址,目的地地址为客户端IP地址。
5)报文经过Nginx七层负载均衡设备时,源地址被还原为集群VIP地址,目的地地址为客户端IP地址。
以上就是四七层负载均衡设备的工作流程,我们通过对比可以发现:四层负载均衡设备(如LVS/DR)的优势在于面对大流量的冲击时,报文只是单方面经过四层负载均衡设备,负载均衡设备负担很小,不易成为网站或系统的瓶颈;而七层负载均衡在分流过程中能够对应用层协议进行深度识别,带来了更精细化均衡的可能,再加上HTTP协议应用广泛并且相对简单,所以七层负载均衡对HTTP请求进行负载均衡的商用能力最强,而四层负载均衡(LVS)因无法对七层业务实现按内容转发,限制了其适用范围,因此七层负载均衡(HAProxy或Nginx)目前已逐渐成为负载均衡技术的主流。