1、二层负载均衡:工作在数据链路层,依据MAC地址进行负载均衡,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。
2、三层负载均衡:工作在网络层,基于IP地址进行负载均衡,外部对虚拟IP地址请求,负载均衡接收后分配后端实际的IP地址响应。
3、四层负载均衡:工作在传输层,通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器,以TCP为例,负载均衡设备在接收到第一个来自客户端的SYN请求时,选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器,TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备起到类似路由器的转发动作。
1、四层+七层来做负载均衡:四层可以保证七层的负载均衡的高可用性。
2、负载均衡做端口转发:例如将特定端口的请求转发到指定的服务器或服务上。
3、数据库读写分离:通过四层负载均衡,可以将数据库的读请求和写请求分别分发到不同的数据库服务器上,提高数据库的性能和可扩展性。
特点 | 二层负载均衡 | 三层负载均衡 | 四层负载均衡 |
工作层次 | 数据链路层 | 网络层 | 传输层 |
负载均衡依据 | MAC地址 | IP地址 | IP地址+端口号 |
协议支持 | 一般支持二层协议 | 支持网络层协议 | 支持传输层协议(TCP/UDP) |
转发效率 | 较高 | 较高 | 相对更高 |
配置复杂度 | 较低 | 较低 | 适中 |
适用场景 | 适用于简单的网络环境,如局域网内的负载均衡 | 适用于基于IP的网络应用的负载均衡 | 适用于需要根据端口进行流量分发的场景,如Web服务器集群、数据库集群等 |
1、硬件负载均衡器:如F5 BIG-IP、Citrix Netscaler等,性能强大,但成本较高。
2、软件负载均衡器:如LVS、Nginx、HAProxy等,LVS是Linux Virtual Server的缩写,主要用来做四层负载均衡;Nginx和HAProxy既可以做四层负载均衡,也可以做七层负载均衡。
1、问:四层负载均衡和七层负载均衡有什么区别?
答:四层负载均衡工作在传输层,基于IP地址和端口号进行流量分发,不支持应用层协议;而七层负载均衡工作在应用层,基于URL、Cookie等信息进行流量分发,支持应用层协议,能够实现更复杂的流量控制和处理。
2、问:如何选择四层负载均衡还是七层负载均衡?
答:如果只需要根据端口进行流量分发,且不需要解析应用层协议,可以选择四层负载均衡;如果需要根据URL、Cookie等信息进行流量分发,或者需要解析应用层协议,则应选择七层负载均衡。