使用 Azure Route Server 的多区域网络

具有苛刻的高可用性或灾难恢复要求的应用程序通常需要部署在多个 Azure 区域中。 在这种情况下,不同区域中的虚拟网络(VNet)需要相互通信。 实现这种通信的一种方法是让所有所需的分支虚拟网络彼此间实现对等互连。 但是,此方法会绕过任何中央网络虚拟设备 (NVA),例如中心中的防火墙。 另一种方法是在部署了中心 NVA 的子网中使用用户定义的路由 (UDR),但维护 UDR 可能具有挑战性。 Azure 路由服务器提供了一种动态替代方案,可自动适应拓扑更改,而无需手动干预。

拓扑学

下图显示了一个双区域体系结构,其中每个区域中都存在一个中心和分支拓扑结构,中心 VNet 通过 VNet 全局进行对等互连:

显示使用 Azure 路由服务器的多区域设计的图表。

每个区域内的 NVA 通过 Azure 路由服务器学习本地中心和分支 VNet 的前缀,并使用 BGP 与其他区域内的 NVA 共享这些前缀。 为避免路由循环,使用 IPsec 或虚拟可扩展 LAN (VXLAN) 等封装技术在 NVA 之间建立此通信至关重要。

要让 Azure 路由服务器能够将分支 VNet 的前缀播发到本地 NVA,并将学习的路由注入回分支 VNet,则必须使用使用远程虚拟网络的网关或路由服务器设置,在分支 VNet 和中心 VNet 之间实现对等互连。

NVA 将它们从远程区域学习到的路由播发到其所在的本地路由服务器。然后,本地路由服务器在本地分支 VNet 中配置这些路由,从而相应地吸引流量。 如果同一区域中存在多个 NVA(路由服务器最多支持 8 个 BGP 对等方),则可以利用 AS 路径预置使其中一个 NVA 优先于其他 NVA,从而有效地建立主动/备用 NVA 拓扑。

重要

为了确保本地路由服务器可以从远程区域获知 NVA 播发的路由,NVA 必须从路由的 AS 路径中删除自治系统编号 (ASN) 65515。 在某些 BGP 平台中,该技术有时被称为“AS覆写”或“AS路径重写”。 否则,BGP 循环阻止机制将阻止本地路由服务器学习这些路由,因为它会禁止学习已包含本地 ASN 的路由。

ExpressRoute

多区域设计可以与 ExpressRoute 或 VPN 网关结合使用。 下图显示了一个拓扑,其中包括一个连接到其中一个 Azure 区域中的本地网络的 ExpressRoute 网关。 在这种情况下,通过 ExpressRoute 线路的覆盖网络有助于简化网络,以便本地前缀仅显示在 NVA 播发的 Azure 中(而不是来自 ExpressRoute 网关)。

关系图显示了使用路由服务器和 ExpressRoute 的多区域设计。

无叠加的设计

NVA 之间的跨区域隧道是必需的,否则会形成路由循环。 例如,查看区域 1 中的 NVA:

  • 区域 1 中的 NVA 从区域 2 中学习前缀,并将它们播发给区域 1 中的路由服务器。
  • 区域 1 中的路由服务器将为区域 1 中的所有子网中的这些前缀注入路由,并以区域 1 中的 NVA 作为下一个跃点。
  • 对于从区域 1 到区域 2 的流量,当区域 1 中的 NVA 将流量发送到另一个 NVA 时,其自己的子网也会继承路由服务器编程的路由,这些路由指向自身 (NVA)。 因此,数据包将返回到 NVA,并显示路由循环。

如果可以选择 UDR,则你可以禁用 NVAS 子网中的 BGP 路由传播,并配置静态 UDR,而不是覆盖,这样 Azure 就可以将流量路由到远程分支 VNet。