什么是4层负载均衡?

4层负载均衡利用定义在网络传输层中第4层的信息作为基础,决定分发客户端的请求到哪个服务器,指定从网络传输过程来说,4层负载均衡策略是基于请求的头部来源(source)、目标IP(destination IP)和端口(port),而不用考虑请求的数据内容。

第4层负载平衡和NAT

今天,术语“第4层负载平衡”最常指的是负载均衡器的IP地址是为网站或服务(例如,通过DNS)通告给客户的IP地址的部署。因此,客户端将负载均衡器的地址记录为其请求中的目标IP地址。

当第4层负载均衡器收到请求并做出负载均衡决策时,它还会对请求数据包执行网络地址转换(NAT),将记录的目标IP地址从其自己的IP地址更改为它在内部网络。同样,在将服务器响应转发给客户端之前,负载均衡器会将数据包标头中记录的源地址从服务器的IP地址更改为自己的IP地址。(记录在数据包中的目标和源TCP端口号有时也会以类似的方式更改。)

第4层负载均衡器根据从TCP流中的前几个数据包中提取的地址信息做出路由决策,而不检查数据包内容。第4层负载均衡器通常是供应商提供的专用硬件设备,并运行专有的负载均衡软件,NAT操作可能由专用芯片而不是软件执行。

当商品硬件不像现在这样强大时,第4层负载平衡是一种流行的流量处理架构方法,客户端和应用服务器之间的交互要简单得多。它比更复杂的负载平衡方法(例如第7层)需要更少的计算,但CPU和内存现在足够快和便宜,以至于第4层负载平衡的性能优势在大多数情况下变得可以忽略不计或无关紧要。

比较第4层和第7层负载均衡器

第7层负载均衡器在OSI模型中的最高级别运行,应用层(在因特网上,HTTP是该层的主要协议)。第7层负载平衡器根据HTTP标头的各种特征和消息的实际内容(例如URL,数据类型(文本,视频,图形)或cookie中的信息)做出路由决策。

考虑到传输的信息的更多方面可以使第7层负载平衡在时间和所需的计算能力方面比第4层更昂贵,但是它仍然可以导致更高的整体效率。例如,因为第7层负载均衡器可以确定客户端请求的数据类型(视频,文本等),所以您不必在所有负载平衡服务器上复制相同的数据。

现代通用负载平衡器,例如NGINX Plus和开源NGINX软件,通常在第7层运行,并作为完全反向代理。而不是像逐层数据包那样管理流量,如使用NAT的第4层负载平衡器,第7层负载平衡代理可以完整地读取请求和响应。它们基于对客户端和应用程序服务器之间的事务的完全理解来管理和操纵流量。

某些负载均衡器可以配置为提供第4层或第7层负载平衡,具体取决于服务的性质。如前所述,现代商用硬件通常足够强大,以至于第4层负载平衡的计算成本节省不足以超过第7层负载平衡带来的更大灵活性和效率的好处。