Azure 负载均衡器的多个前端

使用 Azure 负载均衡器可对多个端口和/或多个 IP 地址上的服务进行负载均衡。 可以使用公共或内部负载均衡器来对一组服务(例如虚拟机规模集或虚拟机 (VM))之间的流量进行负载均衡。

本文介绍有关使用同一端口和协议在多个 IP 地址之间进行负载均衡的基础知识。 如果只想要公开一个 IP 地址上的服务,可以查看公共内部负载均衡器配置的简要说明。 添加多个前端是对单个前端配置的递增。 使用本文中的概念,随时可以扩展简化的配置。

定义 Azure 负载均衡器时,前端和后端池配置与负载均衡规则相连接。 负载均衡规则引用的运行状况探测用于确定 VM 在特定端口和协议上的运行状况。 根据运行状况探测结果,会将新流发送到后端池中的 VM。 前端由负载均衡规则中的 IP 地址(公共或内部)、传输协议(UDP 或 TCP)和端口号组成的三元组定义。 后端池是引用负载均衡器后端池的虚拟机 IP 配置(NIC 资源的一部分)的集合。

下表包含一些示例前端配置:

前端 IP 地址 protocol port
1 65.52.0.1 TCP 80
2 65.52.0.1 TCP 8080
3 65.52.0.1 UDP 80
4 65.52.0.2 TCP 80

上表显示了四种不同的前端配置。 前端 #1、#2 和 #3 使用相同的 IP 地址,但每个前端的端口或协议不同。 前端 #1 和 #4 是多个前端的示例,在多个前端 IP 中重复使用同一前端协议和端口。

在 Azure 负载均衡器中可以灵活定义负载均衡规则。 负载均衡规则声明如何将前端上的地址和端口映射到后端上的目标地址和端口。 是否在不同的规则中重复使用后端端口取决于规则的类型。 每种类型的规则有特定的要求,可能会影响主机配置和探测设计。 有两种类型的规则:

  1. 默认规则,不重复使用后端端口。
  2. 浮动 IP 规则,重复使用后端端口。

Azure Load Balancer 允许在相同的负载均衡器配置中混用这两种规则类型。 如果你遵守规则的约束,负载均衡器就可以针对给定的 VM 同时使用这两种规则或两者的任意组合。 选择哪种规则类型取决于应用程序要求以及支持该配置的复杂性。 应该评估哪种规则类型最适合自己的方案。 我们将从默认行为开始进一步探讨这些方案。

规则类型 #1:不重复使用后端端口

Diagram of Load Balancer traffic with no backend port reuse.

在此方案中,前端的配置如下:

前端 IP 地址 protocol port
green frontend 1 65.52.0.1 TCP 80
purple frontend 2 65.52.0.2 TCP 80

后端实例 IP (BIP) 是后端池中后端服务的 IP 地址,每个 VM 在后端实例 IP 中的唯一端口上公开所需的服务。 此服务通过规则定义来与前端 IP (FIP) 相关联。

我们定义了两个规则:

规则 映射前端 目标后端池
1 green frontend FIP1:80 green backend BIP1:80,green backend BIP2:80
2 VIP FIP2:80 purple backend BIP1:81,purple backend BIP2:81

现在,Azure 负载均衡器的完整映射如下:

规则 前端 IP 地址 protocol port 目标 port
green rule 1 65.52.0.1 TCP 80 BIP IP 地址 80
purple rule 2 65.52.0.2 TCP 80 BIP IP 地址 81

每个规则必须生成具有目标 IP 地址和目标端口唯一组合的流量。 多个负载均衡规则可以通过改变流的目标端口,将流传送到不同端口上的同一后端实例 IP。

运行状况探测始终定向到 VM 的后端实例 IP。 必须确保探测反映 VM 的运行状况。

规则类型 #2:使用浮动 IP 来重复使用后端端口

Azure 负载均衡器允许灵活地在多个前端配置中重复使用前端端口。 此外,在某些应用程序方案中,后端池中单个 VM 上的多个应用程序实例偏好或必须使用相同端口。 重复使用端口的常见示例包括提供高可用性群集、网络虚拟设备,以及公开多个不重新加密的 TLS 终结点。

如果你想要在多个规则中重复使用后端端口,必须在负载均衡规则定义中启用浮动 IP。

“浮动 IP”是 Azure 的术语,表示是所谓的直接服务器返回 (DSR) 的一部分。 DSR 包括两个组成部分:流拓扑和 IP 地址映射方案。 在平台级别,Azure 负载均衡器始终在 DSR 流拓扑中运行,无论是否已启用浮动 IP。 这意味着,流的出站部分始终正确重写为直接流回到来源。

使用默认规则类型时,Azure 将公开传统的负载均衡 IP 地址映射方案以便于使用。 启用浮动 IP 会更改 IP 地址映射方案以实现更大的灵活性。

Diagram of load balancer traffic for multiple frontend IPs with floating IP.

此方案中,后端池中的每个 VM 有三个网络接口:

  • 后端 IP:与 VM 关联的虚拟 NIC(Azure NIC 资源的 IP 配置)。
  • 前端 1 (FIP1):来宾 OS 中的环回接口,该接口上已配置 FIP1 的 IP 地址。
  • 前端 2 (FIP2):来宾 OS 中的环回接口,该接口上已配置 FIP2 的 IP 地址。

假设上述方案使用相同的前端配置:

前端 IP 地址 protocol port
green frontend 1 65.52.0.1 TCP 80
purple frontend 2 65.52.0.2 TCP 80

我们定义了两个浮动 IP 规则:

规则 前端 映射到后端池
1 green rule FIP1:80 green backend FIP1:80(在 VM1 和 VM2 中)
2 purple rule FIP2:80 purple backend FIP2:80(在 VM1 和 VM2 中)

下表显示负载均衡器中的完整映射:

规则 前端 IP 地址 protocol port 目标 port
green rule 1 65.52.0.1 TCP 80 与前端 (65.52.0.1) 相同 与前端 (80) 相同
purple rule 2 65.52.0.2 TCP 80 与前端 (65.52.0.2) 相同 与前端 (80) 相同

入站流的目标现在是 VM 中环回接口上的前端 IP 地址。 每个规则必须生成具有目标 IP 地址和目标端口唯一组合的流量。 可以通过将目标 IP 地址更改为流的前端 IP 地址,在同一 VM 上重复使用端口。 通过将服务绑定到前端的 IP 地址和相应环回接口的端口,可以向负载均衡器公开服务。

你注意到,示例中的目标端口并未更改。 在浮动 IP 方案中,Azure 负载均衡器还支持定义负载均衡规则来更改后端目标端口,使其与前端目标端口不同。

浮动 IP 规则类型是多种负载均衡器配置模式的基础。 当前可用的一个示例是以下配置:配置一个或多个Always On可用性组侦听器。 今后我们会介绍更多此类方案。

注意

若要详细了解启用浮动 IP 所需的特定来宾 OS 配置,请参阅 Azure 负载均衡器浮动 IP 配置

限制

  • 只有 IaaS VM 和虚拟机规模集支持多个前端配置。
  • 使用浮动 IP 规则时,应用程序必须对出站 SNAT 流使用主要 IP 配置。 如果应用程序绑定到来宾 OS 中环回接口上配置的前端 IP 地址,则 Azure 的出站 SNAT 不会重写出站流,因而该流会失败。 查看出站方案
  • 辅助 IP 配置目前不支持浮动 IP。
  • 公共 IP 地址会影响计费。 有关详细信息,请参阅 IP 地址定价
  • 订阅有所限制。 有关详细信息,请参阅服务限制

后续步骤

  • 查看出站连接,了解多个前端对出站连接行为的影响。