通过 Anycast 路由,可以从多个 Azure 区域播发相同的 IP 地址,从而提高应用程序可用性、性能和复原能力。 使用 Azure 路由服务器,可以实现任何广播路由,以基于路由指标自动将流量定向到最接近或最最佳的应用程序实例。
本文介绍如何使用 Azure 路由服务器实现任何广播路由,以便通过专用网络进行多区域应用程序部署。
什么是任播路由?
Anycast 路由是一种网络寻址和路由方法,其中相同的 IP 地址分配给不同位置的多个服务器或应用程序实例。 当客户端将请求发送到任何广播 IP 地址时,网络基础结构会根据路由协议和指标自动将流量路由到最接近或最最佳的服务器。
任播路由的优点
Anycast 路由为多区域部署提供了多项优势:
- 提高性能:流量自动路由到最近的应用程序实例,从而减少延迟
- 增强可用性:如果一个区域不可用,流量将自动切换到其他区域
- 负载分布:可以根据路由指标跨多个区域分布流量
- 简化的客户端配置:无论实际服务器位置如何,客户端都连接到单个 IP 地址
- 专用网络支持:与基于 DNS 的解决方案不同,任何广播都适用于专用 IP 地址和网络
Anycast 与其他多区域方法
虽然 Azure 为多区域部署(例如 Azure 流量管理器、 Azure Front Door 和 Azure 跨区域负载均衡器)提供了多个服务,但这些服务专为公共 Internet 流量和公共 IP 寻址而设计。
使用 Azure 路由服务器的 Anycast 路由专为:
- 专用网络方案:需要专用 IP 寻址的应用程序
- 混合连接:包括使用 ExpressRoute 或 VPN 与本地网络进行连接的方案
- 基于路由的流量管理:DNS 缓存或客户端行为可能会干扰基于 DNS 的解决方案
使用 Azure 路由服务器的 Anycast 实现
Azure 路由服务器通过 ExpressRoute 或 VPN 连接支持任播路由,使从多个 Azure 区域将相同的路由播发到本地网络。
体系结构概述
anycast 实现使用以下组件:
- 多个 Azure 区域:每个区域托管应用程序的实例
- Azure 路由服务器:部署在每个区域中以管理路由播发
- 网络虚拟设备(NVA):在每个区域广播任播 IP 地址
- 中心辐射型拓扑:提供 NVA 与应用程序实例之间的连接
- ExpressRoute 或 VPN:将 Azure 区域连接到本地网络
实现拓扑
下图显示了具有两个 Azure 区域的典型任意广播实现。 每个区域都包含:
- 具有 NVA 和 Azure 路由服务器的中心虚拟网络
- 托管应用程序实例的分支虚拟网络
- ExpressRoute 与本地网络的连接
任播路由的工作原理
-
路由广播:每个区域中的 NVA 向其本地 Azure 路由服务器广播相同的 IP 地址前缀(例如
a.b.c.d/32
) - 路由传播:Azure 路由服务器通过 ExpressRoute 或 VPN 连接将这些路由传播到本地网络
- 路由选择:本地路由协议选择根据路由指标访问任何广播 IP 地址的最佳路径
- 流量分布:根据所选路径自动将客户端流量路由到最佳区域
路由选择和负载均衡
选择哪些区域接收流量取决于路由属性:
- 成本相等的多路径(ECMP):当来自多个区域的路由具有相同指标时,流量均匀分布在所有可用路径之间
- BGP 路径首选项:可以通过调整 AS 路径长度、本地首选项或 MED 值等 BGP 属性来影响路由决策
- AS 路径预置:人为地延长特定路由的 AS 路径,使其不太首选,以创建主备份架构
重要
当本地应用程序实例不可用时,NVA 必须实现运行状况检查机制,以停止播发路由。 这可以防止将流量路由到失败的实例(blackholing)。
返回流量注意事项
正确处理返回流量对于成功的任何广播实现至关重要。 该方法取决于 NVA 如何处理传入流量。
流量处理方法
当 NVA 作为反向代理运行时,反向代理模式提供最可预测的流量流。 在此配置中,NVA 从客户端终止原始连接,并建立与应用程序实例的新连接。 返回流量自然会流回同一 NVA,因为 NVA 管理连接的两侧。
当 NVA 执行目标网络地址转换(DNAT)时,网络地址转换(NAT)模式需要不同的注意事项。 NVA 将目标 IP 地址从任意广播 IP 转换为应用程序的实际 IP 地址。 如果 NVA 还执行源 NAT(SNAT),则返回的流量会通过同一 NVA流回。 但是,如果未执行 SNAT,则需要额外的配置来确保正确的返回流量路由。
返回流量路由
当应用程序收到具有原始客户端 IP 地址(无 SNAT)的流量时,必须确保返回流量流经正确的 NVA。 可以在应用程序的子网中配置用户定义的路由(UDR),以将流量定向回 NVA。 这些 UDR 必须涵盖本地 IP 地址范围,并且适用于单个 NVA 部署。
对于在每个区域中部署多个 NVA 实例的情况,非对称流量的相关注意事项变得尤为重要。 无状态 NVA 可以处理入站和出站流经过不同实例的非对称流量。 但是,有状态 NVA 需要对称流量流来维护连接状态。 有状态 NVA 的解决方案包括使用连接相关性机制、实现 NVA 实例之间的会话共享,或配置具有会话持久性的负载均衡器。
交通流量的最佳做法
运行状况监视应实现可靠的运行状况检查,以快速检测应用程序和 NVA 故障。 故障转移计时需要配置适当的 BGP 计时器才能在快速故障转移和稳定性之间平衡。 流量工程可以使用 BGP 社区或其他属性来实现流量策略。 全面的监视和警报应跟踪跨区域的路由播发和流量模式,以确保最佳性能和快速问题检测。
实施注意事项
先决条件和要求
在使用 Azure 路由服务器实现任何广播路由之前,应仔细规划 IP 地址分配,以确保任何广播 IP 地址不会与现有的 Azure 或本地网络冲突。 深入了解 BGP 路由策略及其对流量分配的影响对于成功部署至关重要。 应用程序体系结构必须设计为有效处理来自多个区域的流量,并且需要为应用程序和网络虚拟设备实施全面的运行状况监视,以确保可靠的作。
部署最佳做法
部署任何广播路由时,建议先从简单的双区域部署开始,然后再扩展到其他区域。 定期测试故障转移方案有助于确保系统满足可用性要求,并在服务中断期间按预期运行。 监视来自不同本地位置的延迟和吞吐量等性能指标,可深入了解路由配置的有效性。 维护 BGP 策略的清晰文档及其预期效果对于持续管理和故障排除至关重要。
限制和注意事项
使用 Azure 路由服务器实现任何广播路由时,应考虑多种因素。 BGP 收敛时间可能会在故障切换事件期间引入延迟,从而可能影响恢复时间目标。 与基于 DNS 的解决方案相比,网络层路由的复杂性增加了更多专业知识和精心规划。 排查网络层路由问题可能比诊断应用程序层问题更具挑战性,需要专业知识和工具。 此外,由于需要跨多个区域增加网络虚拟设备和路由服务器实例,基础结构成本会增加。