负载均衡-4层和7层对比

Posted Amcong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡-4层和7层对比相关的知识,希望对你有一定的参考价值。

     

       按照七层网络协议栈的层划分,负载均衡设备(软件)可以划分为 四层负载均衡和七层负载均衡;其中,四层是基于IP+Port,它能够对报文按照IP进行分发;七层是基于URL地址的服务器负载均衡,它能够针对七层报文内容进行解析,并根据其中的关键字进行逐包转发。

       四层负载均衡的典型代表是LVS,而七层负载均衡的典型代表则为nginx和HAproxy(其中HAproxy既可以做4层负载均衡又可以做七层负载均衡)。


       首先以常见的LVS DR模式来说明四层负载均衡的工作流程:

负载均衡-4层和7层对比_负载均衡

     如上图所示,LVS DR 四层负载均衡工作流程为:

    1. 客户端向负载均衡设备发出请求,源地址为客户端IP地址,目的地址为整个集群的VIP地址;

    2. 交换机转发客户端请求;

    3. LVS负载均衡器利用自带的算法(云眸为wrr)进行算法调度,将请求转发到后端的某一台真实Web服务器;

    4. 此时请求报文的源地址仍然为客户端的IP地址,目的地址为集群Vip地址,但是MAC地址已经被LVS负载均衡服务器更改为后端真实服务器的MAC地址;

    5. 后端真实Web服务器发出响应,源地址为集群Vip地址,目的地址为客户端IP地址,不通过LVS负载均衡服务器(报文仍然要通过交换机)直接与客户端发生联系并回应客户端最初发出的HTTP请求。



     然后再以常用的Nginx来举例说明七层负载均衡器的工作流程:

负载均衡-4层和7层对比_负载均衡_02


   如上图所示。七层负载均衡的工作流程如下:

    1. 客户端向Nginx发出请求,源地址为客户端ip地址,目的地址为集群VIP地址;

    2. 交换机转发请求;

    3. Nginx利用自身算法(如 rr wrr ip_hash)进行调度;

    4. 建立TCP连接,将客户端的请求发送到后端真实web服务器,此时源地址为客户端ip,目的地址为真实web服务的ip地址;

    5. Nginx向后端真实web服务器发出请求;

    6. 后端真实web服务器发出响应,此时源地址为后端真实服务器IP地址,目的地址为客户端IP地址;

    7. 报文经过Nginx时,源地址被还原为集群VIP地址,目的地址仍然为客户端IP地址。



     总结:

     四层负载均衡的优势在于面对大流量冲击的时候,报文只是单方面经过负载均衡器,负载均衡服务器的负担相对很小,不易成为网站或者系统的瓶颈;

     七层负载均衡在分流过程中能够对应用层协议进行深度识别,带来了更精细化均衡的可能;再加上http协议应用广泛,所以七层负载均衡的商用能力更强;而四层负载均衡因无法对七层业务实现内容转发,所以当前主流业务均采用 LVS+Nginx的方式进行负载均衡,从而充分利用两种的优势!

以上是关于负载均衡-4层和7层对比的主要内容,如果未能解决你的问题,请参考以下文章

[转] 四层和七层负载均衡的特点及常用负载均衡NginxHaproxyLVS对比

负载均衡四层和七层

四层和七层负载均衡的区别

四层和七层负载均衡的区别

四层和七层负载均衡的区别

四层和七层负载均衡的区别