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

Posted 峰啊疯了

tags:

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

1.什么是负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展​​网络设备​​​和​​服务器​​​的带宽、增加​​吞吐量​​、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web​​服务器​​​、​​FTP服务器​​​、​​企业​​关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

负载均衡四层跟七层的区别_服务器

详见:​​负载均衡​

2.四层负载均衡

2.1简介

四层网络​负载均衡​​​是基于IP和端口做的转发。通过虚拟的IP和端口接收到请求后,然后分配到真实的服务器,K8s中的endpoint就是基于四层网络负载均衡实现

四层网络负载:一般是在对于后台的服务器进行负载均衡的时候,根据IP地址和端口号以及一些负载均衡设备(例如LVS、F5)来决定那些流量需要做负载均衡,对需要处理的流量进行转发,记录下TCP/UDP的流量通过哪一台服务器处理,后续的同一链接的流量都可以转发到当前的服务器。

四层交换机主要分析 IP 层及 TCP/UDP 层,实现四层流量负载均衡。 七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如 HTTP 协议 URI 或 Cookie 信息。

负载均衡四层跟七层的区别_应用层_02

2.2实现

  • F5:硬件负载均衡器,功能很好,但是成本很高。
  • lvs:重量级的四层负载软件
  • nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活
  • haproxy:模拟四层转发,较灵活

3.七层负载均衡器

3.1简介

七层网络负载均衡是基于URL等​应用层​​​信息作的转发。通过虚拟的URL或者主机名接收到请求,然后在分配给真实的服务器。K8s中的ingress就是基于七层网络负载均衡实现。

七层网络负载均衡(“内容交换”):在四层的基础上,加上了应用层、表示层、会话层。同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。主要是通过报文中的有意义的应用层数据,在加上负载均衡设备配置的策略进行内部服务器的选择。

如果你的 Web 服务器分成两组,一组是中文语言的,一组是英文语言的, 那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。

举个例子,七层网络模型中,客户端和服务器建立连接,只有完成TCP三次握手后,才能接受到客户端发送的真正应用层的报文数据,然后在根据报文中某些特定的字段数据,进行内部服务器的选择和过滤。 在七层网络模型中,负载均衡设备更多的充当于代理服务器的作用,负载均衡设备与客户端、后段的服务器分别建立TCP链接。

负载均衡四层跟七层的区别_应用层_03

3.2实现

  • haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
  • nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
  • apache:功能较差
  • mysql proxy:功能尚可。

4.总结

现在的7层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者各种基于B/S开发的应用系统。 4层负载均衡则对应其他TCP/UDP应用,经常用于C/S开发的系统。


以上是关于负载均衡四层跟七层的区别的主要内容,如果未能解决你的问题,请参考以下文章

负载均衡总结(四层负载与七层负载的区别)

四层负载均衡和七层负载均衡的探究

负载均衡中四层和七层的介绍(转帖)

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

四层and七层负载均衡

Nginx四层负载均衡实践