四层和七层负载均衡「7层负载和4层负载」
最近在做一个项目的网络迁移,发现大家对四层、七层负载均衡不是特别了解,分不清应该是选择四层还是七层负载,所以整理了此篇文章以供参考。在介绍负载均衡之前,我们需要先了解一下OSI参考模型。
什么是OSI参考模型(Open System Interconnection),即开放式系统互联。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。
负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

根据负载均衡所作用在OSI模型的位置不同,负载均衡可以大概分为二层、三层、四层和七层四大类,在实际应用中,常用的就是四层负载均衡及七层负载均衡。

①二层负载均衡
根据OSI模型分的二层负载,一般是用虚拟MAC地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。
②三层负载均衡
一般采用虚拟IP地址方式,外部对虚拟的IP地址请求,负载均衡接收后分配后端实际的IP地址响应。
③四层负载均衡
四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP 端口号)将流量转发到应用服务器。
④七层负载均衡
七层负载均衡工作在OSI模型的应用层,除了根据IP 端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
四层负载与七层负载优缺点
四层优缺点:四层更快,在内核空间处理,不用走用户空间,需要解析得更少。
七层优缺点:七层功能更多,经内核空间,进入用户控件的应用进程进行转发。可以实现更复杂的负载均衡控制,比如基于URL、Session、动静分离等。
现在的七层负载均衡,主要还是要着重于应用广泛的HTTP协议,所以它的应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。四层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。
常用负载均衡工具Nginx/LVS/Haproxy是目前使用最广泛的三种负载均衡软件。

①LVS:Linux Virtual Server,也就是Linux虚拟服务器,使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。LVS主要用来做四层负载均衡。

②Nginx:是一个 Web 服务器和反向代理服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。Nginx主要用来做七层负载均衡。

③HAProxy:是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。Haproxy主要用来做七层负载均衡。
负载均衡常用算法
