ExpressRoute 旨在实现高可用性,为Azure资源提供运营商级专用网络连接。 换句话说,Azure 网络中的 ExpressRoute 路径不存在单一故障点。 有关可最大程度提高 ExpressRoute 线路可用性的设计注意事项,请参阅 使用 ExpressRoute 实现高可用性设计 和 Well-Architected Framework。
但是,考虑到墨菲那句广为流传的警句(凡是可能出错的事,终将会出错),本文重点介绍的是用于应对单个 ExpressRoute 线路无法处理的故障的解决方案。 本文探讨了使用异地冗余 ExpressRoute 线路为灾难恢复构建稳健的后端网络连接时的网络架构考量。
Note
本文所述的概念同样适用于在虚拟 WAN 下或其外部创建 ExpressRoute 线路的情况。
对冗余连接解决方案的需求
ExpressRoute 对等互连位置或整个区域服务都可能出现性能下降。 区域范围的服务中断可能包括自然灾害。 规划业务连续性和任务关键型应用程序的灾难恢复。
Note
如果需要在时间敏感的情况下实现灾难恢复设计,例如在自然灾害期间保持业务连续性,则应考虑以下因素:
- 本文档指导用户如何针对通过不同对等互连位置配置的多个 ExpressRoute 线路实现可靠的灾难恢复设计。 此方案假定你有足够的时间和资源来设置 ExpressRoute 线路。
- 如果需要为不是异地冗余的单个 ExpressRoute 线路快速配置灾难恢复设计,可以使用以下替代方法:
- 对于专用对等互连流量,使用站点到站点 VPN 作为备份。
- 将 Internet 连通性用作 Microsoft 对等互连流量的备份。
无论是在 Azure 区域、本地还是其他任何位置运行何种任务关键型应用程序,都可以使用另一个 Azure 区域作为故障转移站点。 以下文章介绍了从应用程序和前端访问的角度进行灾难恢复:
如果你依赖于使用本地网络与 Microsoft 之间的 ExpressRoute 连接,那么你在规划通过 ExpressRoute 进行灾难恢复时,需要考虑以下因素:
- 使用异地冗余的 ExpressRoute 线路
- 针对不同的 ExpressRoute 线路使用不同的服务提供商网络
- 将每条 ExpressRoute 线路都设计为高可用
- 在客户网络上的不同位置终止不同的 ExpressRoute 线路
- 使用具有可用性区域意识的 ExpressRoute 虚拟网络网关
使用多条 ExpressRoute 线路时的难点
如果你使用多个连接来互连一组相同的网络,则会在网络之间引入并行路径。 未正确架构的并行路径可能会导致非对称路由。 如果路径中包含有状态实体(例如 NAT、防火墙),则非对称路由可能会阻止流量流。 通常,在 ExpressRoute 专用对等互连路径上,你不会遇到 NAT 或防火墙等有状态设备。 因此,通过 ExpressRoute 专用对等互连进行非对称路由不一定会阻止流量流。
但是,如果你对异地冗余的并行路径中的流量进行负载均衡,则不管是否存在有状态实体,都会遇到不一致的网络性能。 这些地理冗余的并行路径可以通过按位置查看提供商页面上列出的相同或不同 metro 来实现。
利用同一都市圈中的 ExpressRoute 线路实现冗余
许多都市圈有两个 ExpressRoute 位置。 例如,可以是 Beijing 和 Beijing2。 设计冗余时,可以使用同一都市圈中的这两个位置构建指向 Azure 的两条并行路径。 你可通过同一提供商完成此任务,也可选择与不同的服务提供商合作来提高复原能力。 这种设计的另一个优势在于,当发生应用程序故障转移时,本地应用程序与 Azure 之间的端到端延迟将保持大致相同。 但如果发生地震之类的自然灾害,则这两条路径的连接可能会不再可用。
不同都市区中的 ExpressRoute 线路冗余
使用不同的都市圈实现冗余时,应选择位于同一地缘政治区域内的次要位置。 若要选择位于地缘政治区域之外的位置,并行路径中的两条线路都需要使用 Premium SKU。 这种配置的优势是可以减少自然灾害导致两条链路都中断的可能性,代价是端到端的延迟会增大。
Note
在 ExpressRoute 线路上启用 BFD 将有助于在 Microsoft Enterprise Edge (MSEE) 设备与客户/合作伙伴 Edge 路由器之间更快地检测链接故障。 但是,在某些故障情况下,到冗余站点的整个故障转移和融合可能需要长达 180 秒的时间,在此期间你可能会遇到延迟时间变长或性能下降的问题。
以下部分解决了配置异地冗余路径时可能面临的挑战。
中小型本地网络的考虑因素
请考虑下图所示的示例网络。 在此示例中,在 Contoso 的本地站点与 Contoso 在某个 Azure 区域中的虚拟网络之间建立了异地冗余的 ExpressRoute 连接。 在关系图中,纯蓝色线条指示首选路径(通过 ExpressRoute 1),虚线表示备用路径(通过 ExpressRoute 2)。
默认情况下,如果在所有 ExpressRoute 路径上以相同的方式播发路由,则 Azure 使用平价多路径 (ECMP) 路由跨最多 4 条 ExpressRoute 线路对本地绑定流量进行负载均衡。
但是,使用异地冗余 ExpressRoute 线路时,需要考虑不同网络路径的不同网络性能,尤其是网络延迟。 若要在正常操作期间获得更一致的网络性能,可能需要首选提供最小延迟的 ExpressRoute 线路。
可以使用以下任一方法让 Azure 相较于另一条 ExpressRoute 线路优先选择某一条 ExpressRoute 线路(以下按有效性高低排序):
- 与其他 ExpressRoute 线路相比,在首选的 ExpressRoute 线路上通告更具体的路由
- 在用于将虚拟网络链接到首选 ExpressRoute 线路的连接上配置较高的连接权重
- 通过具有较长 AS 路径(AS Path prepend)的较不优选 ExpressRoute 线路播发路由
更具体的路由
下图演示了如何使用更具体的路由播发来影响 ExpressRoute 路径选择。 在如图所示的示例中,Contoso 的本地部署 /24 IP 范围通过首选路径(ExpressRoute 1)通告为两个 /25 地址范围,并通过备用路径(ExpressRoute 2)通告为一个 /24 地址范围。
由于 /25 相比 /24 而言更具体,在正常状态下,Azure 将通过 ExpressRoute 1 将流量发送到 10.1.11.0/24。 如果 ExpressRoute 1 的两个连接均已关闭,则虚拟网络只会看到通过 ExpressRoute 2 进行的 10.1.11.0/24 路由播发;因此,在这种故障状态下会使用备用线路。
连接权重
以下屏幕截图演示了如何通过 Azure 门户配置 ExpressRoute 连接的权重。
下图演示了如何使用连接权重来影响 ExpressRoute 路径选择。 默认连接权重为 0。 在以下示例中,ExpressRoute 1 的连接权重配置为 100。 当虚拟网络收到通过多条 ExpressRoute 线路播发的路由前缀时,虚拟网络会优先使用权重最高的连接。
如果 ExpressRoute 1 的两个连接均已关闭,则虚拟网络只会看到通过 ExpressRoute 2 进行的 10.1.11.0/24 路由播发;因此,在这种故障状态下会使用备用线路。
AS 路径预置
下图演示了如何使用 AS 路径前置来影响 ExpressRoute 路径选择。 在图中,通过 ExpressRoute 1 进行的路由通告表明了 eBGP 的默认行为。 在通过 ExpressRoute 2 进行的路由播发中,本地网络的 ASN 额外预置在路由的 AS 路径中。 如果通过多条 ExpressRoute 线路收到相同的路由,根据 eBGP 路由选择过程,虚拟网络将优先使用 AS 路径最短的路由。
如果 ExpressRoute 1 的两个连接都中断了,则虚拟网络将只能看到经由 ExpressRoute 2 播发的 10.1.11.0/24 路由通告。 因此,较长的 AS 路径将变得无关紧要。 在这种故障状态下,将使用备用线路。
使用任一方法时,如果你通过影响 Azure 来优先使用其中的一条 ExpressRoute 线路,则还需要确保本地网络也对 Azure 绑定流量优先使用同一条 ExpressRoute 路径,以避免非对称流。 通常,会使用本地首选项值来影响本地网络,以优先使用其中的一条 ExpressRoute 线路。 本地首选项是一个内部 BGP (iBGP) 指标。 优先使用本地首选项值最高的 BGP 路由。
Important
将某些 ExpressRoute 线路用作备用线路时,需要主动管理这些线路,并定期测试故障转移操作。
大型分布式企业网络
如果你使用大型分布式企业网络,则可能已部署多条 ExpressRoute 线路。 本部分介绍如何使用主动-主动 ExpressRoute 线路设计灾难恢复,而无需另一条备用线路。
请考虑下图所示的示例。 在此示例中,Contoso 有两个本地站点,它们分别通过位于两个不同对等互连位置的 ExpressRoute 线路,连接到位于两个不同 Azure 区域中的两个 Contoso IaaS 部署。
构建灾难恢复的方式会影响跨区域到跨位置(region1/region2 到 location2/location1)流量的路由方式。 请考虑两种以不同方式路由跨区域位置流量的灾难体系结构。
方案 1
在第一个方案中,设计灾难恢复,使Azure区域与本地网络之间的所有流量都流经处于稳定状态的本地 ExpressRoute 线路。 如果本地 ExpressRoute 线路发生故障,远程 ExpressRoute 线路将处理Azure与本地网络之间的所有流量流。
下图演示了方案 1。 在此图中,绿线表示 VNet1 与本地网络之间的流量流路径。 蓝线表示 VNet2 与本地网络之间的流量流路径。 实线表示处于稳定状态的所需路径,虚线表示在携带稳定状态流量流的相应 ExpressRoute 线路发生故障时使用的流量路径。
可以通过设置连接权重来设计此方案,使 VNet 在处理发往本地部署网络的流量时,优先使用连接到本地对等互连位置的 ExpressRoute。 若要完成该解决方案,需确保对称反转流量流。 可以在 BGP 路由器(ExpressRoute 线路在本地端终止)之间的 iBGP 会话上使用本地首选项,以首选 ExpressRoute 线路。 下图演示了该解决方案。
方案 2
下图演示了方案 2。 在此图中,绿线表示 VNet1 与本地网络之间的流量流路径。 蓝线表示 VNet2 与本地网络之间的流量流路径。 在稳定状态下(图中以实线表示),VNet 与本地位置之间的所有流量主要通过 Azure 主干网络传送,只有在 ExpressRoute 故障状态下(图中以虚线表示),这些流才通过本地位置之间的互连传送。
下图演示了该解决方案。 如图所示,可以通过使用更具体的路由(选项 1)或 AS 路径追加(选项 2)来设计该方案的架构,以影响虚拟网络的路径选择。 若要影响Azure绑定流量的本地网络路由选择,需要将本地位置之间的互连配置为不太可取。 将互连链接配置为首选连接的方式取决于在本地网络中使用的路由协议。 您可以将本地首选项与 iBGP 一起使用,或将度量值与 IGP(OSPF 或 IS-IS)一起使用。
Important
当一个或多个 ExpressRoute 线路连接到多个虚拟网络时,虚拟网络到虚拟网络的流量可以通过 ExpressRoute 路由。 但是不建议这样做。 若要实现虚拟网络之间的连接,请配置虚拟网络对等互连。
相关内容
本文介绍如何为 ExpressRoute 线路专用对等互连连接设计灾难恢复方案。 以下文章介绍了从应用程序和前端访问的角度进行灾难恢复: