NGINX.COM
Web Server Load Balancing with NGINX Plus

四层负载均衡是根据网络传输层(四层)定义的信息来决定如何在一组服务器之间分发客户端请求的。特别是对于互联网流量而言,四层负载均衡器根据数据包 HTTP 请求头中记录的源 IP 地址、目标 IP 地址和端口做出负载均衡决策,而不考虑数据包的内容。

网络层共分为七层,由开放式系统互联(OSI)参考模型定义。有关更多信息,请参阅下方 OSI 和互联网模型中的各层

有关负载均衡的更多信息,请参阅《使用 NGINX Plus 进行应用负载均衡》。

 

四层负载均衡和 NAT

如今,术语“四层负载均衡”通常是指此类部署——负载均衡器的 IP 地址是为某个网站或服务(例如通过 DNS)向客户端公布的 IP 地址。因此,客户端在请求时将负载均衡器的地址记录为目标 IP 地址。

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

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

四层负载均衡曾是一种流行的流量处理架构方法,当时商用硬件没有现在这么强大,而且客户端和应用服务器之间的交互也没有那么复杂。与更复杂的负载均衡方法(例如七层)相比,四层负载均衡需要的计算量更少,而现在 CPU 和内存不仅十分快速而且非常经济,因此在大多数情况下,四层负载均衡的性能优势已变得微不足道或无关紧要。

 

比较四层和七层负载均衡器

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

由于需要全方位考虑所传输的信息,因此就时间和所需算力而言,执行七层负载均衡可能比四层负载均衡的开销更大,但整体效率也更高。例如,由于七层负载均衡器能够确定客户端正在请求的数据类型(视频、文本等),因此您不必在所有负载均衡的服务器上复制相同的数据。

现代通用负载均衡器(例如 NGINX Plus 和开源版的 NGINX)通常都在七层运行,并被用作反向代理。与使用 NAT 的四层负载均衡器逐包管理流量不同,七层负载均衡代理可以完整地读取请求和响应。它们基于对客户端和应用服务器之间事务的充分了解来管理并控制流量。

一些负载均衡器既可被配置为四层负载均衡,也可被配置为七层负载均衡,具体情况取决于它们自身的性质。如前所述,由于现代商用硬件通常性能非常强大,相比七层负载均衡带来的更高灵活性和效率,四层负载均衡所节省的计算成本不值一提。

 

NGINX Plus 如何助一臂之力?

作为出色的负载均衡解决方案,NGINX PlusNGINX 在 Dropbox、Netflix 和 Zynga 等高流量网站中有着广泛的应用。全球超过 3.5 亿个网站都使用 NGINX Plus 和 NGINX 开源版快速、可靠、安全地交付内容。

作为基于软件的负载均衡器,NGINX Plus 的成本比具有类似功能的基于硬件的解决方案低得多。NGINX Plus 的全面负载均衡功能可帮助您建立高度优化的应用交付网络。

通过将 NGINX Plus 作为负载均衡器部署在服务器群的前面,您可以提高整个网站的效率、性能、可靠性和规模。NGINX Plus 能够帮助您最大限度地提高客户满意度和 IT 投资回报。

OSI 和互联网模型中的各层

对于互联网流量,“四层”和“七层”负载均衡的说法是一种简称,严格来说并不准确。如欲了解详情,请继续阅读下文。

七个网络层的概念源自开放式系统互联 (OSI) 参考模型。该模型将网络功能分成七个抽象层,通常用其层数(一层至七层)来表示。每一层都有定义数据如何打包和传输的标准。此外,这些标准还定义了如何将构成请求或响应的比特流拆分成称为“协议数据单元 (PDU)”的独立数据包,并定义了以请求头的形式添加到每个 PDU 的元数据,这些元数据可能会指定源主机和目标主机的地址。

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

万维网流量的基本协议(统称为“互联网协议 (IP) 套件”)之间的网络功能分布并不完全符合 OSI 模型。这是因为 IP 套件是在 1984 年最终确定的 OSI 模型发布之前定义和实施的。尽管如此,IP 套件中的各种协议所执行的不同功能大致对应 OSI 各层。

每个层级定义了多个协议,与网站流量负载均衡相关的协议和层级如下:

  • 互联网协议 (IP) 在网络层(三层)运行,其 PDU 被称为“数据包”,IP 负责将它们从源主机交付到目标主机,通常需要跨越构成互联网的多个小型网络之间的边界。每台直接联网的设备都有一个唯一的 IP 地址,用于将设备定位为数据包的接收方。
  • 传输控制协议 (TCP) 在传输层(四层)运行。TCP 在运行浏览器的主机和运行服务器应用的主机之间创建了一个虚拟连接。由于网络具有不可靠性,因此 IP 数据包可能会丢失、损坏或乱序到达。TCP 具有纠正这些错误的机制,可将 IP 数据包流转换为可靠的通信信道。它为每个应用分配了一个唯一的 TCP 端口号,以便向运行许多应用的主机上的正确应用进行交付。
  • 超文本传输协议 (HTTP) 在应用层(七层)运行。它定义了如何对数据进行编码,以便在 Web 浏览器和 Web 服务器(或任何理解 HTTP 编码的应用)之间进行通信。

如上表所示,互联网流量的“四层负载均衡”的说法是一种简称,更为准确的表述是“三/四层负载均衡” —— 因为负载均衡器同时根据源服务器和目标服务器的 IP 地址(三层)以及应用的 TCP 端口号(四层)做出负载均衡决策。对于“七层负载均衡”,更准确的表述可能是“五层到七层负载均衡”,因为 HTTP 整合了 OSI 五、六、七层的功能。

Tags

No More Tags to display