什么是第 4 层负载平衡?

第 4 层负载均衡使用在网络传输层(第 4 层)定义的信息作为决定如何在服务器组之间分配客户端请求的基础。 具体来说,对于互联网流量,第 4 层负载均衡器根据数据包头中记录的源和目标 IP 地址和端口来做出负载均衡决策,而不考虑数据包的内容。

总共有七个网络层,由开放系统互连 [OSI] 参考模型定义。 有关更多信息,请参阅下面的OSI 和 Internet 模型中的层

有关负载均衡的更多信息,请参阅使用 NGINX Plus 实现application负载均衡

第 4 层负载平衡和 NAT

如今,“第 4 层负载均衡”一词最常指的是这样一种部署,其中负载均衡器的 IP 地址是向网站或服务的客户端公布的 IP 地址(例如通过 DNS)。 因此,客户端将负载均衡器的地址记录为其请求中的目标 IP 地址。

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

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

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

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

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

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

现代通用负载均衡器,例如 NGINX Plus 和开源 NGINX 软件,一般在第 7 层运行并充当完整的反向代理。 第 7 层负载均衡代理可以完整地读取请求和响应,而不是像使用 NAT 的第 4 层负载均衡器那样逐个数据包地管理流量。 他们根据对客户端和应用服务器之间的交易的全面了解来管理和操纵流量。

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

NGINX 如何提供帮助

NGINX PlusNGINX是 Dropbox、Netflix 和 Zynga 等高流量网站使用的一流的负载均衡解决方案。 全球有超过3.5 亿个网站依靠 NGINX Plus 和 NGINX Open Source 快速、可靠、安全地传递其内容。

作为基于软件的负载均衡器,NGINX Plus 比具有类似功能的基于硬件的解决方案便宜得多。 NGINX Plus 中全面的负载均衡功能使您能够构建高度优化的应用交付网络。

当您在服务器场前面插入 NGINX Plus 作为负载均衡器时,它可以提高整个网站的效率、性能、可靠性和规模。 NGINX Plus 可帮助您最大限度地提高客户满意度和 IT 投资回报。

OSI 和 Internet 模型中的层

对于互联网流量,“第 4 层”和“第 7 层”负载均衡是一种方便的简写,但并不严格准确。 如果你有兴趣,请继续阅读。

七个网络层的概念来自开放系统互连 (OSI) 参考模型。 该模型将网络功能分为七个抽象层,通常用数字来表示(第 1 层至第 7 层)。 每一层都有定义如何打包和传输数据的标准。 除其他事项外,这些标准还定义了如何将构成请求或响应的比特流分割成称为协议数据单元(PDU) 的离散包。 该标准还以标头的形式定义了添加到每个 PDU 的元数据;例如,元数据可能指定原始主机和目标主机的地址。

将网络功能的不同方面分配给不同的层可以简化每个层的处理,因为协议只需要知道如何处理其自己层的 PDU,以及在报头中包含哪些元数据,以便相邻层的协议可以在其自己的数据分段级别重新打包 PDU。

万维网上流量的基本协议(统称为互联网协议 (IP) 套件)之间的网络功能分布并不完全符合 OSI 模型。 这是因为 IP 套件是在 1984 年最终 OSI 模型发布之前定义和实现的。 尽管如此,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 层的功能。