新式应用程序通常需要跨多个 Azure 区域部署,以满足高可用性、灾难恢复和性能要求。 Azure 路由服务器支持复杂的多区域网络体系结构,这些体系结构提供动态路由功能,同时通过网络虚拟设备(NVA)保持集中式网络控制。
本文介绍如何使用 Azure 路由服务器设计和实现多区域拓扑,包括与 ExpressRoute 的集成以及避免路由循环的注意事项。
重要概念
使用 Azure 路由服务器的多区域网络涉及几个重要概念:
动态路由传播:随着网络拓扑的发展,Azure 路由服务器通过边界网关协议(BGP)自动交换区域之间的路由信息,无需手动路由表管理。
集中式网络控制:不同于区域之间直接的虚拟网络对等互联,路由服务器允许流量通过基于中心的 NVA 传输,从而维护跨区域的安全策略和网络可见性。
自动适应:体系结构会自动适应拓扑更改,例如添加新辐射网络或修改连接,而无需手动干预。
体系结构概述
多区域体系结构在每个区域中使用中心辐射型拓扑,通过全局虚拟网络对等互连进行连接,并由 Azure 路由服务器实例协调:
核心组件
多区域体系结构由多个关键组件组成,这些组件协同工作以提供动态路由功能。 每个区域都包含一个中心虚拟网络,用于托管 Azure 路由服务器和网络虚拟设备(NVA),用于管理路由决策。 应用程序工作负荷部署在每个区域的轮辐型虚拟网络中,保持网络基础设施和应用程序之间的分离。 使用全局虚拟网络对等互连,中心虚拟网络实现跨区域连接,以支持区域间通信。 网络设备使用安全隧道在区域之间通信,以维护路由信息同步。
流量流
流量流遵循结构化模式,可确保跨多区域拓扑高效路由。 路由服务器从其区域内的本地分支网络和 NVA 学习路由,以构建全面的路由表。 NVA 在区域之间建立安全隧道,以共享路由信息并启用跨区域连接。 每个路由服务器将学习的路由传播到本地分支网络,确保工作负载能够到达远程区域的目的地。 发生拓扑更改(例如添加新辐射网络或修改连接)时,体系结构会自动触发跨所有区域的路由更新,而无需手动干预。
配置要求
若要成功实现此体系结构,请配置以下组件:
虚拟网络对等互连设置
在将分支网络对等互连到中心网络时,启用 “使用远程虚拟网络的网关或路由服务器” 设置。 此配置允许:
- 路由服务器将辐射网络中的子网前缀发布到 NVA
- 要注入到分支网络路由表中的已学习路由
- 跨整个拓扑的动态路由传播
NVA 隧道配置
使用封装技术在 NVA 之间建立安全通信:
- IPsec 隧道:提供区域 NVA 之间的加密通信
- VXLAN 网络覆盖:启用跨区域的第 2 层网络扩展
BGP AS 路径操控
配置 NVA 以修改 BGP AS 路径以防止路由循环:
重要
NVA 必须在公布从远程区域学会的路由时,从 AS 路径中删除自治系统号(ASN)65515。 此过程称为“AS 重写”或“AS-path 重写”,可防止 BGP 循环防护机制阻止路由学习。 如果没有此配置,路由服务器不会了解包含其自己的 ASN(65515)的路由。
常见的 AS 路径技术
AS路径前置 - 使路径看起来更长,以影响路由决策:
# Example for Cisco NVA
route-map PREPEND-AS permit 10
set as-path prepend 65001 65001
AS 路径筛选 - 阻止具有特定 AS 路径的路由:
# Filter specific AS paths
ip as-path access-list 1 deny _65002_
route-map FILTER-AS permit 10
match as-path 1
高可用性注意事项
对于可复原的多区域连接:
- 多个 NVA:可以在每个区域中部署多个 NVA(路由服务器最多支持 8 个 BGP 对等方)
- AS 路径扩展:使用 AS 路径扩展来建立主/备 NVA 关系
- 冗余隧道:在区域之间配置多个隧道连接以实现故障转移
ExpressRoute 集成
多区域路由服务器体系结构可以与 ExpressRoute 线路集成,以将连接扩展到本地网络:
ExpressRoute 集成的优点
- 简化路由:本地前缀仅通过 NVA 广播在 Azure 中出现
- 集中控制:所有流量都流经集线虚拟网络设备,以实现一致的策略实施。
- 覆盖优化:ExpressRoute 线路支持 NVA 之间的覆盖网络
设计注意事项
- 路由播发:将 NVA 配置为播发本地路由,而不是仅依赖于 ExpressRoute 网关
- 带宽规划:确保 ExpressRoute 线路可以处理跨区域流量负载
- 冗余:考虑多个 ExpressRoute 线路以实现高可用性
替代设计:无覆盖网络
虽然建议使用覆盖隧道,但可以使用用户定义的路由(UDR):在没有隧道的情况下实现多区域连接:
为什么建议使用隧道
覆盖隧道为多区域体系结构中的路由循环提供基本保护。 如果没有覆盖隧道,当区域 1 的 NVA 从区域 2 学习前缀并将其播发到本地路由服务器时,可能会发生路由循环。 然后,路由服务器在所有区域 1 子网中配置这些路由,并将 NVA 设定为下一跃点。 当 NVA 尝试将流量发送到区域 2 时,其自己的子网路由会指向其自身,从而创建一个路由循环,防止成功跨区域通信。 覆盖隧道通过在底层网络(用于隧道建立)和覆盖网络(用于应用程序流量)之间创建逻辑分隔来解决此问题,确保流量可以在区域之间正确流动,而无需创建循环。
基于 UDR 的替代方法
如果环境中无法使用覆盖隧道,您可以采用用户定义路由(UDR)的替代方法。 此方法需要在 NVA 子网中禁用 BGP 路由传播,以防止导致冲突的自动路由学习。 然后,必须通过创建通过适当网络路径显式定向跨区域流量的 UDR 来配置静态路由。 虽然此方法可以正常工作,但你应接受手动维护这些静态路由的运营开销,因为随着时间的推移,网络拓扑会发生变化。
Trade-offs
方法 | 优点 | 缺点 |
---|---|---|
覆盖隧道 | 动态路由,自动适应,安全性 | 更多配置复杂性 |
基于 UDR | 更简单的初始设置 | 手动路由管理,可伸缩性有限 |
后续步骤
浏览以下资源,实现和优化多区域路由服务器体系结构: