HAProxy–理论–05–4层和7层负载均衡的区别
1、4层负载均衡(4层交换机)
- 工作在第4层(传输层)
- 负载均衡器 根据 IP范围和端口转发用户请求
- 常见的基于四层的负载均衡器有LVS、F5等。
1.1、原理
以常见的TCP应用为例,负载均衡器在接收到第一个来自客户端的SYN请求时,会通过设定的负载均衡算法选择一个最佳的后端服务器,同时将报文中目标IP地址修改为后端服务器IP,然后直接转发给该后端服务器,这样一个负载均衡请求就完成了。
从这个过程来看,一个TCP连接是客户端和服务器直接建立的,而负载均衡器只不过完成了一个类似路由器的转发动作。
在某些负载均衡策略中,为保证后端服务器返回的报文可以正确传递给负载均衡器,在转发报文的同时可能还会对报文原来的源地址进行修改。
整个过程下图所示。
1.2、举例
假设yourdomain.com 域名对应有2台web,如果用户请求http://yourdomain.com/anything,那么4层负载将请求转发给其中一个web。
2、7层负载均衡(7层交换机)
- 工作在第7层(应用层)
- 负载均衡器 根据 用户请求的内容将请求转发到不同的后端服务器。因此也称为"内容交换器"。
- 这种负载平衡模式允许您在同一域和端口下运行多个Web应用程序服务器。
- 支持多种应用协议,常见的有HTTP、FTP、SMTP等
- 常见的七层负载均衡器有HAproxy、Nginx等。
2.1、原理
以常见的TCP应用为例,由于负载均衡器要获取到报文的内容,因此只能先代替后端服务器和客户端建立连接,接着,才能收到客户端发送过来的报文内容,然后再根据该报文中特定字段加上负载均衡器中设置的负载均衡算法来决定最终选择的内部服务器。
纵观整个过程,七层负载均衡器在这种情况下类似于一个代理服务器。整个过程如下图所示。
2.2、举例
- 如果用户请求yourdomain.com/blog,则会将其转发到博客后端,后端是一组运行博客应用程序的服务器。
- 其他请求被转发到web-backend,后端可能正在运行另一个应用程序。
3、4层和7层负载均衡的区别
在7层负载均衡模式下,负载均衡器与客户端及后端的服务器会分别建立一次TCP连接
在4层负载均衡模式下,仅建立一次TCP连接。
由此可知,7层负载均衡对负载均衡设备的要求更高,而7层负载均衡的处理能力也必然低于4层模式的负载均衡。