Haproxy 实现负载均衡与LVS的区别

前言:

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

         所谓的四层就是ISO参考模型中的第四层,四层负载均衡也可称为

四层交换机,它主要是通过分析IP层及TCP/UDP层的流量实现的基于IP

加端口的负载均衡,常见的基于第四层的负载均衡有LVS,F5等。

以常见的TCP应用为例。负载均衡在接收第一个来自客户端的请求时。

会通过设定的负载均衡算法选择一个最佳的后端服务器,同时将报文中

目的IP地址修改为后端服务器的IP。然后只将转发给该后端的服务器,

这样一个负载均衡的请求就完成了,从这个过程来看。一个TCP连接是

客户端和服务器直接建立的,而负载均衡器只不过完成了一个类似路由

器的转发动作,在某些负载均衡的策略中,为保证后端的服务器返回的

报文可以正确的传递给负载均衡器。在转发报文的同时可能会对报文原

来的源地址进行修改,整个过程如图所示。

https://s3.51cto.com/wyfs02/M02/82/B5/wKioL1dfXEiy30hCAABEn10fvd8185.png

同样。七层负载均衡也称为七层交换机,位于OSI的最高层,即应用层

此时负载均衡器支持多种应用协议,常见的有HTTP、FTP、SMTP等,

七层负载均很其可以根据报文内容,再配合负载均衡的算法来选择后端

的服务器,因此也称为内容交换机,比如,对于web服务器的负载均衡,

七层负载均衡不但可以根据IP+端口的方法可以进行分流,还可根据网站

的URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有

两台web服务器分别对应中英文两个网站,两个域名分别是A、B,要实现

访问A域名时进入中文网站,使用B域名方本英文网站。这在第四层的服务

器中是无法实现的,而七层负载均衡可以根据客户端访问域名的不同相篡

则对应的网页进行负载均衡处理,常见的七层负载均衡有HAproxy、Ngnix等。

这里我们以常见的TCP应用为例,由于负载均衡要获取报文内容,

因此只能先代替后端的服务器和客户端建立连接。接着才能收到客户

端发过来的报文内容,然后再根据报文中特定的字段加上指定负载均衡

器中设定的负载均衡的算法来决定最终选择的内部服务器,纵观整个过程,

七层负载均衡器在这种情况下类似于一个代理服务器,整个过程如下图所

示:

https://s1.51cto.com/wyfs02/M00/82/B7/wKiom1dfW06APOX2AABGWCtgsH0727.png

对比四层负载均衡和七层负载均衡的整个过程,可以看出,在七层负载均衡模式下

,负载均衡服务器会分别与客户端和服务端分别建立以此TCP连接,在四层负载均衡

的模式下,仅建立一次客户端与负载均衡服务器之间的TCP连接。由此可知。七层

负载均衡对负载均衡服务设备要求更高,而七层负载均衡的处理能力也必然低于

四层负载均衡的能力。

HAproxy与LVS的异同

1)两者都是软件负载均衡的产品,但是LVS是基于Linux操作系统实现的一种

软负载均衡,而HAproxy是基于第三方应用实现的软负载均衡。

2) LVS是居于第四层的IP负载均衡的技术,而HAproxy是基于第四层

和第七层技术,可提供TCP和HTTP应用的负载均衡综合解决

方案,

3)LVS工作在ISO模式的第四层,因此其状态检测功能单一,而

HAproxy在转台检测方面功能强大,可支持端口。URL脚本的多种

状态的检测方式,

4)HAProxy 虽然功能强大,但是整体的处理性能地与四层模式的LVS

负载均衡,而LVS拥有接近硬件设备的网络吞吐和连接负载能力。

猜你喜欢

转载自blog.csdn.net/weixin_43831670/article/details/89454643
今日推荐