博客 | NGINX

NGINX Plus 和 Microsoft Azure 负载均衡器

NGINX-F5-horiz-black-type-RGB 的一部分
Michael Pleshakov 缩略图
米歇尔·普列沙科夫
2021 年 6 月 25 日发布

[编辑——此帖子已更新,以反映截至 2021 年 6 月 NGINX Plus 和 Azure 负载均衡服务支持的功能。 它还引用了NGINX Plus API ,它取代并弃用了帖子原始版本中提到的单独动态配置模块。]

使用 Microsoft Azure 的客户有三种负载均衡选项: NGINX Plus 、Azure 负载均衡服务或 NGINX Plus 与 Azure 负载均衡服务结合使用。 这篇文章旨在为您提供足够的信息来做出决定,并向您展示如何将 NGINX Plus 与 Azure 负载均衡器结合使用为您提供具有丰富第 7 层功能的高可用性 HTTP 负载均衡器。

概述

Microsoft Azure 为用户提供了两种负载均衡器选择: Azure 负载均衡器用于基本 TCP/UDP 负载均衡(位于第 4 层,即网络层), Azure应用网关用于 HTTP/HTTPS 负载均衡(位于第 7 层,即应用层) 。 虽然这些解决方案适用于简单的用例,但它们不提供 NGINX Plus 的许多标准功能。

以下是 NGINX Plus 与 Azure 负载平衡产品的一般比较:

特征 NGINX Plus Azure 负载均衡器 Azureapplication网关 NGINX Plus 和 Azure 负载均衡器
HTTP 和 HTTPS 负载均衡
HTTP/2 负载均衡
WebSocket 负载均衡
TCP/UDP 负载均衡
负载平衡方法 先进的 简单的 简单的 先进的
会话持久性 先进的 简单的 简单的 先进的
HTTP 健康检查 先进的 简单的 简单的 先进的
TCP/UDP 健康检查 先进的 简单的 先进的
SSL/TLS 终止
速率和连接限制
URL 重写和重定向
URL 请求映射
主动-主动 NGINX Plus 集群

现在让我们探讨一下 NGINX Plus 和 Azure 负载均衡服务之间的一些区别、它们的独特功能以及 NGINX Plus 和 Azure 负载均衡器如何协同工作。

比较 NGINX Plus 和 Azure 负载平衡服务

负载均衡方法

除了默认的循环方法之外,NGINX Plus 还提供了几种负载平衡方法供选择:

  • 最少连接– 每个请求都发送到具有最少活动连接数的服务器。
  • 最短时间– 每个请求都发送到得分最低的服务器,该得分是根据平均延迟和最低活动连接数的加权组合计算得出的。
  • IP 哈希– 每个请求都发送到由请求的源 IP 地址确定的服务器。
  • 通用哈希——每个请求都发送到由用户定义的密钥确定的服务器,该密钥可以包含任意文本和 NGINX变量的组合,例如与IP地址端口标头字段或 URI 相对应的变量。
  • 随机– 每个请求都发送到随机选择的服务器。 当包含两个参数时,NGINX Plus 会随机选择两台服务器,然后根据配置使用最少连接算法(默认)或最少时间在它们之间进行选择。

所有方法都可以通过为每个后端服务器分配不同的权重值来扩展。 有关方法的详细信息,请参阅NGINX Plus 管理指南。

Azure 负载均衡器提供一种负载均衡方法Hash ,该方法默认使用基于IP地址端口目标IP地址目标端口协议标头字段的密钥来选择后端服务器。

Azureapplication网关仅提供循环方法。

会话持久性

当应用要求将来自特定客户端的所有请求继续发送到同一个后端服务器时,需要使用会话持久性(也称为粘性会话会话亲和性),因为客户端状态不会在后端服务器之间共享。

NGINX Plus 支持三种高级会话持久方法

  • 粘性 Cookie – NGINX Plus 向给定客户端的上游组的第一个响应添加会话 cookie。 该 cookie 标识用于处理请求的后端服务器。 客户端在后续请求中包含此 cookie,NGINX Plus 使用它将客户端请求定向到同一个后端服务器。
  • 粘性学习- NGINX Plus 监视请求和响应以定位会话标识符(通常是 cookie),并使用它们确定会话中后续请求的服务器。
  • 粘性路由- 可以配置路由值和后端服务器之间的映射,以便 NGINX Plus 监视路由值的请求并选择匹配的后端服务器。

NGINX Plus 还提供了两种基本的会话持久方法,通过上面描述的两种负载平衡方法实现:

  • IP 哈希– 后端服务器由请求的 IP 地址确定。
  • 哈希– 后端服务器由用户定义的密钥确定,例如IP地址端口或 URI。

Azure 负载均衡器支持与 NGINX Plus Hash 方法等效的方法,尽管密钥仅限于IP地址端口目标IP地址目标端口协议标头字段的某些组合

Azureapplication网关支持与 NGINX Plus Sticky Cookie 方法等效的方法,但存在以下限制:您无法配置 Cookie 的名称、其到期日期、域、路径或HttpOnlySecure Cookie 属性。

笔记: 当使用 Azure 负载均衡器、NGINX Plus IP 哈希方法或将源IP地址包含在密钥中的 NGINX Plus 哈希方法时,仅当客户端的 IP 地址在整个会话期间保持不变时,会话持久性才能正常工作。 情况并非总是如此,例如当移动客户端从 WiFi 网络切换到蜂窝网络时。 为了确保请求继续到达同一个后端服务器,最好使用上面列出的高级会话持久方法之一。

健康检查

Azure 负载均衡器和 Azure应用网关支持基本的应用运行状况检查。 您可以指定负载均衡器请求的 URL,如果收到预期的 HTTP200返回码。 您可以指定健康检查频率和服务器被视为不健康之前的超时时间。 使用 Azure应用网关,您还可以自定义预期的响应代码并与响应正文的内容进行匹配。

NGINX Plus 通过高级健康检查扩展了此功能。 除了指定要使用的 URL 之外,您还可以使用 NGINX Plus 在请求中插入标头并查找不同的响应代码,并检查响应的标头和正文。

NGINX Plus 中一个有用的相关功能是慢启动。 NGINX Plus 会缓慢地将负载增加到新的或最近恢复的服务器,这样它就不会因连接过多而无法承受。当您的后端服务器需要一些预热时间时,此功能很有用,如果它们在显示为健康时就被赋予了全部的流量份额,则它们将失败。

NGINX Plus 还支持对TCPUDP服务器的健康检查,允许您指定要发送的字符串和要在响应中查找的字符串。

Azure 负载均衡器支持TCP 运行状况检查,但不提供此级别的监控。

SSL/TLS 终止

NGINX Plus 支持SSL/TLS 终止Azureapplication网关也支持。 Azure 负载均衡器则不然。

连接和速率限制

使用 NGINX Plus,您可以配置多个限制来控制往返于 NGINX Plus 实例的流量。 这些包括限制入站连接与后端节点的连接入站请求的速率以及从 NGINX Plus 到客户端的数据传输速率

Azureapplication网关和 Azure 负载均衡器不支持速率或连接限制。 但是,您可以使用其他 Azure 服务来配置和启用速率限制。

协议支持以及 URL 重写和重定向

NGINX Plus、Azureapplication网关和 Azure 负载均衡器均支持以下内容:

  • HTTP/2 – NGINX Plus 自 2016 年起就接受来自客户端的HTTP/2 请求。 Azure 最近添加了 WebSocket 支持。
  • WebSocket – NGINX Plus 自 2014 年起就接受来自客户端的 WebSocket 连接。 Azure 最近添加了 WebSocket 支持。
  • URL 重写和请求重定向——请求的 URL 可以在传递到后端服务器之前更改,这意味着您可以在内部更改请求路径和文件位置,而无需修改向客户端公布的 URL。 您还可以重定向请求,例如将 HTTP 请求的方案更改为 HTTPS。

NGINX Plus 与 Azure 负载平衡服务

与 Azure 负载均衡器和Azure 流量管理器一起使用时,NGINX Plus 将成为具有丰富第 7 层功能的高可用性负载均衡器解决方案。

双活高可用性

通过使用 Azure 负载均衡器在可用性集中的 NGINX Plus 实例之间进行负载均衡,您可以在区域内创建高可用性负载均衡器。

自动扩展 NGINX Plus

您可以根据平均 CPU 使用率设置 NGINX Plus 实例的自动扩缩。 通过在托管 NGINX Plus 实例的 Azure 云服务中创建可用性集,可以实现这一点。 您需要注意 NGINX Plus 配置文件的同步。

自动扩展后端实例

您还可以根据平均 CPU 使用率设置后端实例的自动扩展。 通过在托管后端实例的 Azure 云服务中创建可用性集可以实现这一点。 您需要注意从 NGINX Plus 配置中添加或删除后端实例,这可以通过NGINX Plus API来实现。

为了自动更新 NGINX Plus 配置(与可用性集结合使用或单独使用 NGINX Plus),您可以将服务发现系统与 NGINX Plus 集成,可以通过NGINX Plus API或通过 DNS(如果系统具有 DNS 接口)。 查看我们的博客文章,了解如何使用 NGINX Plus 与流行的服务发现系统:

与 Azure 流量管理器集成

对于全球分布式环境,您可以使用 Azure 流量管理器分配来自多个区域的客户端的流量。

Azure 负载平衡服务中的其他功能

Azure 负载均衡器和application网关由 Azure 云管理,均提供高度可用的负载均衡解决方案。

Azure 负载均衡器的一个功能是源 NAT ,而 NGINX Plus 不具备该功能,其中从后端实例出站的流量具有与负载均衡器相同的源 IP 地址。

使用 Azure 云的自动缩放功能时,Azure 负载均衡器提供自动重新配置

概括

如果您的负载均衡要求很简单,Azure 负载均衡产品可以提供良好的解决方案。 当需求变得更加复杂时,NGINX Plus 是一个不错的选择。 您可以单独使用 NGINX Plus,也可以与 Azure 负载均衡器结合使用,以实现 NGINX Plus 实例的高可用性。

要在 Microsoft Azure 上试用 NGINX Plus,请立即开始30 天免费试用联系我们讨论您的用例


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”