HAproxy七层负载均衡四层/七层负载均衡

Posted 资本家的鱼

tags:

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

​四层负载均衡与七层负载均衡在工作原理

HAproxy七层负载均衡(1)四层/七层负载均衡_负载均衡

概述:

1.四层负载均衡工作在OSI模型中的四层,即传输层。四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器。四层负载均衡单纯的提供了终端到终端的可靠连接,并将请求转发至后端,连接至始至终都是同一个。LVS就是很典型的四层负载均衡。

2.七层负载均衡工作在OSI模型的第七层应用层,所以七层负载均衡可以基于请求的应用层信息进行负载均衡,例如根据请求的资源类型分配到后端服务器,而不再是根据IP和端口选择。七层负载均衡的功能更丰富更灵活,也能使整个网络更智能。如上图所示,在七层负载均衡两端(面向用户端和服务器端)的连接都是独立的。

3.简言之,四层负载均衡就是基于IP+端口实现的。七层负载均衡就是通过应用层资源实现的。


七层与四层的请求过程

用户访问一个网站的域名时,DNS会把域名解析成公网IP,并且会把用户的报文进行封装,因为是跨网络,会把报文的目标地址指为要访问网站的公网IP,源地址为客户端的IP地址,路由器先会对用户请求的IP做与运算,发现不在同一个网段,所以会把报文进行转发,指定路由器的下一跳的地址,请求的过程中会经过多个路由器,最终到达网站的IP(企业防火墙上的公网IP);最终目标的IP地址就为网站的公网IP,访问到防火墙上的公网IP后,会把报文再次转发,源地址就为企业的内网地址,目标地址就为haproxy所对应的IP地址,然后会基于haproxy是四层负载还是七层负载来决定;如果是四层负载,则haproxy会根据调度算法,把用户的请求调度到一台后端的webserver上,报文的源地址就为haproxy的地址,目标地址为webserver的地址(修改源地址和目标地址是为了回复报文准确的返还给haproxy,防止发送给别的服务器);如果haproxy是七层负载,则haproxy会再次通过TCP三次握手,与后端的webserver建立连接,而不是作为转发。


​​负载均衡的软件​

在四层(tcp)实现负载均衡的软件:
      lvs------>重量级
      nginx------>轻量级,带缓存功能,正则表达式较灵活
      haproxy------>模拟四层转发,较灵活
      在七层(http)实现反向代理的软件:
      haproxy------>天生技能,全面支持七层代理,会话保持,标记,路径转移;
      nginx------>只在http协议和mail协议上功能比较好,性能与haproxy差不多;
      apache------>功能较差


HAProxy与LVS的异同

​1)两者都是软件负载均衡产品,但是LVS是基于Linux操作系统实现的一种软负载均衡,而HAProxy是基于第三应用实现的软负载均衡。

2)LVS是基于四层的IP负载均衡技术,而HAProxy是基于四层和七层技术、可提供TCP和HTTP应用的负载均衡综合解决方案。

3)LVS工作在ISO模型的第四层,因此其状态监测功能单一,而HAProxy在状态监测方面功能强大,可支持端口、URL、脚本等多种状态检测方式。

4)HAProxy虽然功能强大,但是整体处理性能低于四层模式的LVS负载均衡,而LVS拥有接近硬件设备的网络吞吐和连接负载能力。​

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

四层七层负载均衡的区别

haproxy反代负载均衡

四层七层负载均衡的区别

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

Haproxy

实现基于Haproxy+Keepalived负载均衡高可用架构