你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

部署具有高可用性的 NVA

Microsoft Entra ID
Azure 防火墙
Azure Functions
Azure 流量管理器
Azure 虚拟机

本文介绍在 Azure 中部署一组网络虚拟设备 (NVA) 以实现高可用性的最常见选项。 NVA 通常用于控制按不同安全级别分类的网络段之间的流量流,例如 De-Militarized 区域 (DMZ) 虚拟网络和公共 Internet 之间。

有许多设计模式,其中 NVA 用于检查不同安全区域之间的流量,例如:

  • 检查从虚拟机到 Internet 的出口流量,并防止数据外泄。
  • 检查从 Internet 到虚拟机的入口流量并防止攻击。
  • 筛选 Azure 中虚拟机之间的流量,以防止横向移动受损的系统。
  • 筛选本地系统和 Azure 虚拟机之间的流量(如果它们被视为属于不同的安全级别)。 (例如,如果 Azure 托管 DMZ,并且在本地托管内部应用程序。)

有许多 NVA 示例(例如,网络防火墙、4 层反向代理、IPsec VPN 终结点、具有 Web 应用程序防火墙功能的基于 Web 的反向代理、Internet 代理),限制可从 Azure、7 层负载均衡器等访问哪些 Internet 页面。 可将所有都插入到具有本文所述模式的 Azure 设计中。 即使是 Azure 第一方网络虚拟设备(如 Azure 防火墙Azure 应用程序网关)也使用本文后面介绍的设计。 从设计角度以及排查网络问题时,了解这些选项至关重要。

要回答的第一个问题是为什么需要网络虚拟设备的高可用性。 原因是这些设备控制网络段之间的通信。 如果这些设备不可用,则网络流量无法流动,应用程序也将停止工作。 计划中断和计划外中断可能会偶尔将 NVA 实例关闭,(像 Azure 中的任何其他虚拟机或任何其他云一样)。 即使这些 NVA 配置有高级托管磁盘以在 Azure 中提供单实例 SLA,也会关闭这些实例。 因此,高可用性的应用程序至少需要第二个 NVA,以确保连接。

先决条件:本文假定读者对 Azure 网络、Azure 负载均衡器虚拟网络流量路由 (UDR) 有一个基本了解。

选择将网络虚拟设备部署到 Azure VNet 这一最佳选项时,最需要考虑的方面是 NVA 供应商是否已审查并验证该特定设计。 供应商还必须提供在 Azure 中集成 NVA 所需的 NVA 配置。 如果 NVA 供应商为 NVA 提供不同的替代项作为支持的 NVA 设计选项,则这些因素可能会影响决策:

  • 收敛时间:每个设计需要多长时间才能将流量从失败的 NVA 实例中移开?
  • 拓扑支持:每个设计选项支持哪些 NVA 配置? 具有 n+1 冗余的主动/主动、主动/备用、横向扩展 NVA 群集?
  • 流量对称:特定设计是否强制 NVA 对数据包执行源网络地址转换 (SNAT) 以避免非对称路由? 还是通过其他方式强制实施流量对称?

本文档中的以下部分将介绍用于将 NVA 集成到中心和分支网络的最常见体系结构。

注意

本文重点介绍中心和分支设计虚拟 WAN未涵盖,因为虚拟 WAN 对 NVA 的部署方式更具规范性,具体取决于虚拟 WAN 中心是否支持特定的 NVA。 有关详细信息,请参阅虚拟 WAN 中心中的网络虚拟设备

HA 体系结构概述

下面的体系结构描述了实现高度可用的 NVA 所需的资源和配置:

解决方案 优点 注意事项
Azure 负载均衡器 支持主动/主动、主动/备用和横向扩展 NVA。 非常好的收敛时间 NVA 需要为运行状况探测提供端口,尤其是用于主动/备用部署。 进出 Internet 的流需要 SNAT 进行对称
Azure 路由服务器 NVA 需要支持 BGP。 支持主动/主动、主动/备用和横向扩展 NVA。 流量对称需要 SNAT
网关负载均衡器 保证没有 SNAT 的流量对称性。 可以在租户之间共享 NVA。 非常好的收敛时间。 支持主动/主动、主动/备用和横向扩展 NVA。 支持进出 Internet 的流,无东-西流
更改 PIP/UDR NVA 不需要特殊功能。 保证对称流量 仅适用于主动/被动设计。 1-2 分钟的高收敛时间

负载均衡器设计

此设计使用两个 Azure 负载均衡器向其余网络公开 NVA 群集:

  • 内部负载均衡器用于将来自 Azure 和本地的内部流量重定向到 NVA。 此内部负载均衡器使用 HA 端口规则进行配置,以便每个 TCP/UDP 端口都重定向到 NVA 实例。
  • 公共负载均衡器向 Internet 公开 NVA。 由于 HA 端口适用于入站流量,因此需要在专用负载均衡规则中打开每个单独的 TCP/UDP 端口。

下图描述了将数据包从 Internet 运送到分支 VNet 中的应用程序服务器的跃点序列:

ALB Internet

下载此体系结构的 Visio 文件

通过 NVA 将来自分支的流量发送到公共 Internet 的机制是一种 0.0.0.0/0 用户定义路由,下一跃点是内部负载均衡器的 IP 地址。

对于 Azure 与公共 Internet 之间的流量,流量流的每个方向都将跨不同的 Azure 负载均衡器(通过公共 ALB 的入口数据包,以及通过内部 ALB 的出口数据包)。 因此,如果需要流量对称,则需要 NVA 实例执行源网络地址转换 (SNAT) 以吸引返回流量并避免流量不对称。

此设计还可用于检查 Azure 和本地网络之间的流量:

ALB 本地

通过 NVA 在分支之间发送流量的机制完全相同,因此没有提供其他关系图。 在上面的示例关系图中,由于分支 1 不知道分支 2 的范围,0.0.0.0/0 UDR 会将发往分支 2 的流量发送到 NVA 的内部 Azure 负载均衡器。

对于本地网络与 Azure 或 Azure 虚拟机之间的流量,流量对称性由内部 Azure 负载均衡器保证:当流量流的两个方向经过相同的 Azure 负载均衡器时,将选择相同的 NVA 实例。

对于单个 NVA 中断,Azure 负载均衡器有很好的收敛时间。 由于运行状况探测每 5 秒发送一次,并且需要 3 个失败的探测才能声明后端实例停止服务,因此,Azure 负载均衡器通常需要 10-15 秒才能将流量聚合到不同的 NVA 实例。

此设置支持主动/主动和主动/备用配置。 但是,对于主动/备用配置,NVA 实例需要提供 TCP/UDP 端口或 HTTP 终结点,该终结点不会响应负载均衡器运行状况探测,除非实例处于活动角色。

使用 L7 负载均衡器

此设计的特定情况是将 Azure 公共负载均衡器替换为 7 层负载均衡器,例如 Azure 应用程序网关(该负载均衡器可自行视为 NVA)。 在这种情况下,NVA 只需要前面有一个内部负载均衡器,因为应用程序网关的流量将源自 VNet 内部,而无需考虑流量不对称。

NVA 应采用 7 层负载均衡器不支持的协议的入站流量,并可能采用所有出口流量。 有关将 Azure 防火墙用作 NVA 和 Azure 应用程序网关作为 7 层 Web 反向代理时此配置的详细信息,请参阅虚拟网络的防火墙和应用程序网关

Azure 路由服务器

Azure 路由服务器是一项允许 NVA 通过边界网关协议 (BGP) 与 Azure SDN 交互的服务。 NVA 不仅将了解 Azure VNet 中存在哪些 IP 前缀,还可以在 Azure 中虚拟机的有效路由表中注入路由。

ARS Internet

在上图中,每个 NVA 实例通过 BGP 与 Azure 路由服务器对等互连。 分支子网中不需要路由表,因为 Azure 路由服务器将编程 NVA 播发的路由。 如果在 Azure 虚拟机中编程了两个或多个路由,则它们将使用等价多路径 (ECMP) 为每个流量流选择一个 NVA 实例。 因此,如果流量对称是一个需求,则 SNAT 是此设计中的必须条件。

此插入方法支持主动/主动(所有 NVA 将相同的路由播发到 Azure 路由服务器),以及主动/备用(一个 NVA 播发路由的 AS 路径比另一个短)。 Azure 路由服务器最多支持 8 个 BGP 邻接。 因此,如果使用主动 NVA 的横向扩展群集,此设计最多支持 8 个 NVA 实例。

收敛时间在此设置中相当快,并且将受到 BGP 邻接的保持连接和保持时间计时器的影响。 虽然 Azure 路由服务器具有默认保持连接和保持时间计时器(分别为60 秒和 180 秒),但 NVA 可以在 BGP 邻接建立期间实现较低的计时器。 这些计时器设置太低可能会导致 BGP 不稳定。

此设计是需要与 Azure 路由交互的 NVA 的最常见选项,例如需要了解 Azure VNet 中配置的前缀的 VPN 终止 NVA,或通过 ExpressRoute 专用对等互连播发某些路由。

网关负载均衡器

Azure 网关负载均衡器是将数据路径中插入 NVA 的新方法,无需使用User-Defined 路由来引导流量。 对于通过 Azure 负载均衡器或公共 IP 地址公开其工作负载的虚拟机,可以通过透明方式将入站和出站流量重定向到位于不同 VNet 中的 NVA 群集。 下图描述了当工作负载通过 Azure 负载均衡器公开应用程序时,数据包针对来自公共 Internet 的入站流量所遵循的路径:

GWLB Internet

此 NVA 注入方法的主要优点之一是不需要源网络地址转换 (SNAT) 来保证流量对称性。 此设计选项的另一个好处是,同一 NVA 可用于检查进出不同 VNet 的流量,从而从 NVA 的角度实现多租户。 NVA VNet 与工作负载 VNet 之间不需要 VNet 对等互连,工作负载 VNet 中不需要用户定义的路由,这极大地简化了配置。

网关负载均衡器的服务注入可用于达到 Azure 公共负载均衡器的入站流量(及其返回流量),以及源自 Azure 的出站流量。 Azure 虚拟机之间的东-西流量不能利用网关负载均衡器进行 NVA 注入。

在 NVA 群集中,Azure 负载均衡器运行状况检查探测将用于检测单个 NVA 实例故障,实现非常快速的收敛时间(10-15 秒)。

更改 PIP-UDR

此设计背后的想法是在没有 NVA 冗余的情况下进行所需的设置,并在 NVA 遭受停机时对其进行修改。 下图显示了如何将 Azure 公共 IP 地址关联到主动 NVA (NVA1),分支中用户定义的路由将主动 NVA 的 IP 地址作为下一跃点(10.0.0.37)。

PIP/UDR Internet

如果主动 NVA 不可用,备用 NVA 将调用 Azure API,把公共 IP 地址和分支用户定义的路由重新映射到自身(或移动专用 IP 地址)。 这些 API 调用可能需要几分钟才能生效,这就是为什么在本文档所有选项中此设计提供的收敛时间最差。

此设计的另一个限制是仅支持主动/备用配置,这可能会导致可伸缩性问题:如果需要增加 NVA 支持的带宽,此设计的唯一选项是纵向扩展这两个实例。

此设计的一个好处是,不需要源网络地址转换 (SNAT) 来保证流量对称性,因为在任何给定时间点只有一个主动 NVA。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤