本文介绍在 Azure 中部署一组网络虚拟设备(NVA)以实现高可用性的常见方法。 NVA 通常控制具有不同安全级别的网段之间的流量流。 例如,可以在外围网络虚拟网络和公共 Internet 之间使用 NVA,或者通过虚拟专用网络(VPN)或软件定义的 WAN(SD-WAN)设备将外部位置连接到 Azure。
本文假定你已基本了解 Azure 网络、 Azure 负载均衡器、 虚拟网络流量路由和用户定义的路由(UDR)。
许多设计模式使用 NVA 检查不同安全区域之间的流量。 这些模式可能出于以下目的使用 NVA:
检查从虚拟机流出到 Internet 的出口流量,并防止数据外泄。
检查从 Internet 到虚拟机的入口流量并防止攻击。
筛选 Azure 中虚拟机之间的流量,以防止受损系统进行横向渗透。
筛选本地系统和 Azure 虚拟机之间的流量,尤其是在它们属于不同的安全级别时。 例如,Azure 托管外围网络,而本地环境托管内部应用程序。
从外部位置(例如本地网络或其他公有云)终止 VPN 或 SD-WAN 隧道。
可以使用本文中的模式将以下 NVA 添加到 Azure 设计:
- 网络防火墙
- 第 4 层反向代理
- 互联网协议安全性IPsec VPN节点
- SD-WAN 设备
- 具有 Web 应用程序防火墙功能的基于 Web 的反向代理
- Internet 代理,以限制可从 Azure 访问哪些 Internet 页面
- 第 7 层负载均衡器
Azure 原生 NVA(如 Azure 防火墙 和 Azure 应用程序网关)使用本文后面介绍的设计。 应从设计角度了解这些选项,并出于网络故障排除目的。
NVA 通常需要高可用性,因为它们控制网络段之间的通信。 如果 NVA 不可用,则网络流量无法流动,应用程序停止工作。 计划内与计划外中断偶尔会导致 NVA 实例停机,这与 Azure 或其他云平台中的虚拟机类似。 即使使用 Azure 高级 SSD 对其进行配置,NVA 实例也会关闭,后者在 Azure 中提供单实例服务级别协议。 高可用性应用程序至少需要两个 NVA 来帮助确保连接。
选择将 NVA 部署到 Azure 虚拟网络的最佳选项时,最重要的方面是 NVA 供应商是否已评估并验证其设计。 供应商还必须提供所需的 NVA 配置,才能将 NVA 集成到 Azure 中。 如果 NVA 供应商提供了多个受支持的设计选项,请考虑以下因素做出决策:
收敛时间:每次设计将流量从故障 NVA 实例重新路由所需的时间
拓扑支持: 每个设计选项支持的 NVA 配置,例如主动/主动、主动/备用或横向扩展 NVA 群集,这些群集具有额外的冗余单元
流量对称性: 特定设计是否强制 NVA 对数据包执行源网络地址转换(SNAT),以避免非对称路由,或者设计是否通过其他方式强制实施流量对称
注释
本文重点介绍中心辐射型设计。 本文未介绍 Azure 虚拟 WAN ,因为它具有部署 NVA 的更规范性准则,具体取决于虚拟 Wan 中心是否支持特定的 NVA。 有关详细信息,请参阅 虚拟 WAN 中心中的 NVA。
以下部分介绍可用于将 NVA 集成到中心辐射型网络的常见体系结构。
高可用性体系结构概述
解决方案 | 优点 | 注意事项 |
---|---|---|
Azure 负载均衡器 | 此解决方案支持主动/主动和主动/备用配置,并可通过横向扩展 NVA 实现良好的收敛时间。 | NVA 需要为运行状况探测提供端口,尤其是用于主动/备用部署。 对于有状态设备,例如需要保证流量对称的防火墙,来自和流向互联网的流量需要使用SNAT。 |
Azure 路由服务器 | NVA 必须支持边界网关协议(BGP)。 此解决方案支持主动/主动、主动/备用和横向扩展 NVA。 | 流量对称性需要在该解决方案中使用 SNAT。 |
Azure 网关负载均衡器 | 无需 SNAT 即可保证流量对称性。 NVA 可以跨租户共享。 此解决方案具有良好的收敛时间,支持主动/主动、主动/备用和横向扩展 NVA。 | 此解决方案支持流入和流出 Internet 的流量,但不支持东-西流量。 |
动态专用 IP 地址和 UDR | NVA 不需要特殊功能。 此解决方案保证对称流量。 | 此解决方案仅适用于主动/被动设计。 其收敛时间较长,为 1 到 2 分钟。 |
负载均衡器
负载均衡器设计使用两个 Azure 负载均衡器向网络其余部分公开 NVA 群集。 该方法同时适用于有状态和无状态的 NVA。
内部负载均衡器将内部流量从 Azure 和本地重定向到 NVA。 此内部负载均衡器配置了 高可用性端口规则 ,以便将每个传输控制协议(TCP)和用户数据报协议(UDP)端口重定向到 NVA 实例。
公共负载均衡器向 Internet 公开 NVA。 高可用性端口适用于入站流量,因此需要在专用负载均衡规则中打开每个 TCP/UDP 端口。
下图显示了数据包从互联网到分支虚拟网络中的应用程序服务器所经历的跳跃序列。 这些数据包遍历防火墙 NVA 来控制进出公共 Internet 的流量,也称为 North-South 流量。
下载此体系结构的 Visio 文件。
为了通过 NVA 将节点的流量发送到公共 Internet,此设计使用 0.0.0.0/0
的 UDR。 下一跃点是内部负载均衡器的 IP 地址。
对于 Azure 与公共 Internet 之间的流量,流量流的每个方向都会跨越不同的 Azure 负载均衡器。 即使防火墙 NVA 具有公共网络和内部网络的单个网络接口卡(NIC),也会出现此过程,因为入口数据包通过公共 Azure 负载均衡器,出口数据包通过内部 Azure 负载均衡器。 流的两个方向都经过不同的负载均衡器。 因此,如果需要流量对称,NVA 实例必须执行 SNAT 以吸引返回流量并确保流量对称。 大多数防火墙都需要流量对称。
下图显示了如何使用相同的负载均衡器设计来检查 Azure 与本地网络之间的流量,或 East-West 流量,这只涉及内部负载均衡器。 还可以使用此方法通过 NVA 在节点之间发送流量。
在上图中,spoke1 不知道 spoke2 的范围。 因此,0.0.0.0/0
UDR 会将发往 spoke2 的流量发送至 NVA 的内部 Azure 负载均衡器。
对于本地网络与 Azure 之间的流量,或者在 Azure 虚拟机之间,内部 Azure 负载均衡器在单 NIC NVA 中保证流量对称性。 当流量流的两个方向遍历同一个 Azure 负载均衡器时,负载均衡器会为两个方向选择相同的 NVA 实例。 如果双 NIC NVA 设计具有每个通信方向的内部负载均衡器,SNAT 可确保流量对称。 前面的 North-South 关系图提供了此设计的示例。
在此设计中,双 NIC NVA 必须确定将负载均衡器的运行状况检查回复发送至的位置。 负载均衡器始终使用与源相同的 IP 地址进行运行状况检查,即 168.63.129.16
。 NVA 必须通过接收这些健康检查响应的同一接口返回这些响应。 此过程通常需要操作系统中的多个路由表,因为基于目标的路由通过同一网络接口卡(NIC)发送回复。
对于单个 NVA 中断,Azure 负载均衡器有很好的收敛时间。 可以每隔五秒钟发送一次运行状况探测,经过三次探测失败后,后端实例将被声明为不可用。 因此,Azure 负载均衡器通常需要 10 到 15 秒才能将流量聚合到其他 NVA 实例。
此设置支持主动/主动和主动/备用配置。 对于主动/备用配置,NVA 实例需要提供一个 TCP 或 UDP 端口,或者一个仅响应当前执行活动角色的实例所需负载均衡器健康探测的 HTTP 终结点。
第 7 层负载均衡器
安全设备的特定设计将 Azure 公共负载均衡器替换为第 7 层负载均衡器,例如 Azure 应用程序网关,可以将其视为 NVA 本身。
在此方案中,NVA 只需一个内部负载均衡器来处理来自工作负荷系统的流量。 Dual-NIC 设备有时会使用此方法来避免与 Azure 负载均衡器运行状况检查相关的路由问题。 此设计仅支持第 7 层负载均衡器支持的第 7 层协议,这通常是 HTTP 和 HTTPS。
NVA 应处理第 7 层负载均衡器不支持的协议的入站流量。 NVA 可能还需要处理出口流量。 有关详细信息,请参阅 虚拟网络的防火墙和应用程序网关。
路由服务器
路由服务器 是一项服务,允许 NVA 通过 BGP 与 Azure 软件定义的网络交互。 NVA 了解 Azure 虚拟网络中存在哪些 IP 地址前缀。 它们还可以在 Azure 中虚拟机的有效路由表中注入路由。
在上图中,每个 NVA 实例通过 BGP 连接到路由服务器。 此设计不需要在分支子网中使用路由表,因为路由服务器会配置由 NVA 播发的路由。 如果在 Azure 虚拟机中对两个或多个路由进行编程,则它们使用成本相同的多路径路由为每个流量流选择一个 NVA 实例。 因此,如果需要流量对称,则必须在此设计中包含 SNAT。
此插入方法支持主动/主动和主动/备用配置。 在主动/主动配置中,所有 NVA 均向路由服务器播发相同的路由。 在主动/备用配置中,NVA 播发的路由自治系统 (AS) 路径长度会短于其他设备。 路由服务器最多支持 8 个 BGP 邻接关系。 因此,如果使用活动 NVA 的横向扩展群集,此设计最多支持 8 个 NVA 实例。
此设置的收敛时间很快。 BGP 邻接关系的保持活动和保持时间计时器会影响收敛时间。 路由服务器的默认保持计时器设置为 60 秒,保留计时器设置为 180 秒。 但在建立 BGP 邻接关系时,NVA 可以协商使用较短的计时器值。 设置这些计时器太低可能会导致 BGP 不稳定。
此设计适用于需要与 Azure 路由交互的 NVA。 示例包括 SD-WAN 或 IPsec NVA,这些 NVA 通常具有良好的 BGP 支持。 这些 NVA 需要学习在 Azure 虚拟网络中配置的前缀,或通过 ExpressRoute 专用对等互连播发某些特定路由。 这些类型的设备通常是无状态的,因此流量对称性不是问题,不需要 SNAT。
网关负载均衡器
网关负载均衡器 提供将数据路径中插入 NVA 的方法,而无需使用 UDR 路由流量。 对于通过 Azure 负载均衡器或公共 IP 地址公开其工作负荷的虚拟机,可以将入站和出站流量透明地重定向到位于不同虚拟网络中的 NVA 群集。 如果工作负载通过 Azure 负载均衡器公开应用程序,则下图显示了数据包在来自公共互联网的流入流量中所遵循的路径。
此 NVA 注入方法具有以下优势:
此方法不需要 SNAT 来保证流量对称性。
可以使用相同的 NVA 来检查进出不同虚拟网络的流量,从 NVA 的角度实现多租户功能。
NVA 虚拟网络与工作负荷虚拟网络之间无需进行虚拟网络对等互连,这一设计简化了配置。
工作负荷虚拟网络中不需要 UDR,这也简化了配置。
可以通过网关负载均衡器使用服务注入来传入 Azure 公共负载均衡器的入站流量、其返回流量以及来自 Azure 的出站流量。 Azure 虚拟机之间的东-西流量不能利用网关负载均衡器进行 NVA 注入。
在 NVA 群集中,Azure 负载均衡器运行状况检查探测可检测单个 NVA 实例中的故障,从而提供 10 到 15 秒的快速收敛时间。
动态公共 IP 地址和 UDR 管理
此设计的目标是设置无 NVA 冗余的功能,如果 NVA 遇到停机,则可以对其进行修改。 下图显示了 Azure 公共 IP 地址如何与关系图中的活动 NVA(NVA1)关联。 分支中的 UDR 使用主动 NVA 的 IP 地址 (10.0.0.37
) 作为下一个跃点。
如果活动 NVA 不可用,备用 NVA 将调用 Azure API 将公共 IP 地址和分支 UDR 重新映射到自身,或接管专用 IP 地址。 这些 API 调用可能需要几分钟才能生效。 此设计的收敛时间在本文所述所有选项中表现最差。
此设计仅支持活动/备用配置,这可能会导致可伸缩性问题。 如果需要增加 NVA 支持的带宽,则必须纵向扩展这两个实例。
此设计不需要 SNAT 来保证流量对称性,因为在任何给定时间只有一个 NVA 处于活动状态。
供稿人
Microsoft维护本文。 以下参与者撰写了本文。
主要作者:
- 基思·迈尔 |首席云解决方案架构师
- Telmo Sampaio |主体服务工程管理器
- 何塞·穆雷诺 |首席工程师
若要查看非公开的LinkedIn个人资料,请登录LinkedIn。