什么是第4层负载均衡?
第4层负载均衡使用网络传输层(第4层)定义的信息,决定如何将客户端请求分发到一组服务器。具体而言,对于互联网流量,第4层负载均衡器根据数据包标头中记录的源和目标IP地址及端口做出负载均衡决策,而不考虑数据包的内容。
开放系统互连(OSI)参考模型定义了7个网络层。有关详细信息,请参阅下文的OSI模型和互联网模型中的层。
有关负载均衡的更多信息,请参阅《使用NGINX Plus实现应用负载均衡》。
第4层负载均衡和NAT
如今,“第4层负载均衡”一词通常指这样一种部署方式:向客户端公布负载均衡器的IP地址,作为网站或服务的访问地址(例如通过DNS公布)。因此,客户端会在请求中将负载均衡器的地址记录为目标IP地址。
第4层负载均衡器收到请求并做出负载均衡决策时,还会对请求数据包执行网络地址转换(NAT),将其中记录的目标IP地址从负载均衡器自身的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层负载均衡在灵活性和效率方面带来的优势。
NGINX 如何提供帮助
NGINX Plus和NGINX是出色的负载均衡解决方案,广泛应用于Dropbox、Netflix和Zynga等高流量网站。全球超过3.5亿个网站依靠NGINX Plus和NGINX Open Source快速、可靠且安全地交付内容。
作为基于软件的负载均衡器,NGINX Plus的成本远低于功能相近的硬件解决方案。NGINX Plus提供全面的负载均衡功能,可帮助构建高度优化的应用交付网络。
在服务器集群前端部署NGINX Plus作为负载均衡器,可以提升整个网站的效率、性能、可靠性和扩展能力。NGINX Plus有助于提高客户满意度,并提升IT投资回报。
OSI模型和互联网模型中的层
对于互联网流量,将负载均衡简称为“第4层”和“第7层”负载均衡虽然方便,但并不完全准确。如果您对此感兴趣,请继续阅读。
七层网络模型的概念源自开放系统互连(OSI)参考模型。该模型将网络功能划分为七个抽象层,通常以编号指代(第1层至第7层)。每一层都有相应标准,用于定义数据的封装和传输方式。这些标准还定义了如何将构成请求或响应的比特流分割成称为协议数据单元(PDU)的独立数据包。标准还定义了以标头形式添加到每个PDU的元数据;例如,元数据可能会指定源主机和目标主机的地址。
将网络功能的不同方面分配到不同层,可以简化各层的处理,因为协议只需了解如何处理本层的协议数据单元(PDU),以及应在标头中包含哪些元数据,以便相邻层的协议按照各自的数据分段级别重新封装这些PDU。
万维网流量所使用的各项基本协议统称为互联网协议(IP)套件。这些协议对网络功能的分配并不完全符合OSI模型,因为IP套件早在最终版OSI模型于1984年发布之前就已定义并实施。尽管如此,IP套件中的各类协议确实各自承担不同的功能,并与OSI各层大致对应。
每一层都定义了多种协议,但以下协议和层级与网站流量的负载均衡相关:
- 互联网协议(IP)在网络互联层(第3层)运行。其协议数据单元(PDU)称为数据包,IP负责将数据包从源主机传送到目标主机,通常需要跨越构成互联网的多个较小网络之间的边界。每台直接连接到互联网的设备都有唯一的IP地址,用于定位作为数据包接收方的设备。
- 传输控制协议(TCP)在传输层(第4层)运行。TCP实际上会在运行浏览器的主机与运行服务器应用程序的主机之间建立虚拟连接。由于网络并不可靠,IP数据包可能会丢失、损坏或不按顺序到达。TCP提供了纠正这些错误的机制,可将IP数据包流转换为可靠的通信通道。每个应用程序都会分配一个唯一的TCP端口号,以便在运行多个应用程序的主机上将数据传送到正确的应用程序。
- 超文本传输协议(HTTP)在应用层(第7层)运行。它定义了在Web浏览器与Web服务器(或任何能够解析HTTP编码的应用程序)之间进行通信时数据的编码方式。
从上述列表可以看出,将互联网流量的“第4层负载均衡”作为简称较为方便,但更准确的术语是“第3/4层负载均衡”,因为负载均衡器会同时根据源服务器和目标服务器的IP地址(第3层)以及应用的TCP端口号(第4层)做出决策。“第7层负载均衡”更确切的说法可能是“第5至7层负载均衡”,因为HTTP综合了OSI第5层、第6层和第7层的功能。

