在AWS(亚马逊网络服务)上设置专线(Direct Connect)的主备自动切换,通常涉及到配置BGP(边界网关协议)以及正确设置AWS Direct Connect和VPN连接(如果使用)的组合。这样可以确保当主连接发生故障时,流量可以自动切换到备用连接。以下是一般步骤:

1. 准备工作

  • 确保你有两条AWS Direct Connect专线连接,一条作为主连接,另一条作为备用连接。
  • 如果你还没有设置Direct Connect,你需要先与AWS或其合作伙伴联系,购买并设置Direct Connect连接。

2. 配置BGP

  • 在AWS Direct Connect上为每条专线配置BGP会话。BGP是一种动态路由协议,它可以自动选择最佳路径,并在一条路径不可用时切换到另一条路径。
  • 确保为每个连接分配不同的ASN(自治系统号)或使用相同的ASN但确保BGP会话配置正确。

3. 设置路由优先级

  • 通过调整BGP的AS_PATH或使用本地偏好(LOCAL_PREF)来设置路由优先级,确保主连接的优先级高于备用连接。
  • 通常,你可以通过在主连接的BGP广播中添加更短的AS_PATH或更高的LOCAL_PREF来实现这一点。
  • AS_PATH是BGP(边界网关协议)中的一个属性,用于记录到达目的网络的路径信息。在BGP中,每个自治系统(AS)都有一个唯一的标识符,称为自治系统号(ASN)。当BGP路由信息在不同的自治系统之间传播时,每个经过的自治系统的ASN都会被附加到AS_PATH属性中。这样,AS_PATH就形成了一个包含所有经过的自治系统编号的列表,帮助实现了两个主要目的:

    • 防止路由循环:通过检查AS_PATH中是否存在自己的ASN,自治系统可以识别并丢弃从自己发出并最终又返回的路由信息,从而避免路由循环。
    • 路由选择:AS_PATH也被用作一种路由选择的标准。一般来说,路径越短,该路由被选中的可能性就越大,因为较短的AS_PATH通常意味着较少的自治系统间跳数,从而可能有更好的性能。
    • 假设有四个自治系统,它们的ASN分别是AS64520、AS64521、AS64522和AS64523。现在,我们要从AS64520发送数据到AS64523。

      • 当AS64520向AS64521宣告一条到达某个网络的路由时,AS_PATH是空的(因为它是起点)。
      • AS64521接收到这条路由信息后,会在AS_PATH中添加自己的ASN,然后将这条更新后的路由信息传播给下一个自治系统(比如AS64522)。此时,AS_PATH变为64521
      • AS64522在收到这条路由信息后,会继续在AS_PATH中添加自己的ASN,然后将这条路由信息传播给AS64523。此时,AS_PATH变为64522 64521
      • 最后,当AS64523收到这条路由信息时,AS_PATH是64522 64521,表示这条路由信息经过了AS64522和AS64521。
      • 通过这个AS_PATH,AS64523知道这条路由信息是从AS64520出发,经过AS64521和AS64522,最终到达自己这里的。如果AS64523还通过其他路径收到到达AS64520的路由信息,它可以使用AS_PATH长度作为选择最佳路径的依据之一。同时,如果AS64523在AS_PATH中看到了自己的ASN,它就会识别出这是一个路由循环,并丢弃这条路由信息。

    • AWS环境中,AS_PATH属性是BGP(边界网关协议)的一部分,它是自动管理的,不需要用户直接设置。当你在AWS中使用Direct Connect或者在VPC(虚拟私有云)中设置VPN连接并启用BGP时,AS_PATH就会在BGP会话中自动形成和更新。

    • AWS Direct Connect的AS_PATH

      当通过AWS Direct Connect建立连接时,你会与AWS建立一个BGP会话。在这个过程中,你的网络(通常是你的数据中心或者办公网络)会被分配一个ASN(自治系统号),AWS Direct Connect的另一端也会使用一个ASN。当通过这个连接宣告路由时,BGP会自动处理AS_PATH的更新。你不需要手动设置AS_PATH,但你需要了解它是如何工作的,以便在设计和故障排除时能够正确解读BGP路由信息。

    • VPN连接的AS_PATH

      如果你在AWS VPC中设置了基于BGP的VPN连接,同样的情况也适用。你的客户网关(CGW)和AWS的虚拟私有网关(VGW)之间会建立BGP会话,AS_PATH也会在这些BGP会话中自动形成和更新。

    • 查看AS_PATH

      虽然你不需要(也不能)直接设置AS_PATH,但你可以通过各种网络监控和故障排除工具来查看BGP路由信息,包括AS_PATH。例如,你可以使用如下方法:

      • AWS Direct Connect控制台:在AWS Direct Connect控制台中,你可以查看与你的Direct Connect连接相关的BGP路由信息。
      • 命令行工具:使用如bgp命令行工具可以查看BGP会话的详细信息,包括AS_PATH
      • 网络监控工具:使用专业的网络监控和诊断工具也可以查看BGP路由信息。

      • 理解AS_PATH对于故障排除和优化你的AWS网络连接是非常重要的。例如,如果你发现某条路由的性能不佳,查看其AS_PATH可以帮助你理解数据包是如何在不同的自治系统之间传输的,从而找到可能的瓶颈所在。

    • LOCAL_PREF(本地偏好值)是BGP(边界网关协议)中的一个属性,用于在同一个自治系统(AS)内部选择最佳路由。与AS_PATH不同,AS_PATH是用来防止路由循环并在不同自治系统之间选择路径的,而LOCAL_PREF是用来控制自治系统内部的路由选择的。LOCAL_PREF提供了一种机制,允许网络管理员基于策略偏好而不是仅仅基于路径长度来选择路由。

    • LOCAL_PREF的工作原理
      • LOCAL_PREF的值越高,该路由就越被偏好。
      • 默认情况下,如果没有设置LOCAL_PREF,BGP会使用其他属性(如AS_PATH长度)来选择路由。
      • LOCAL_PREF只在本地AS内有效,不会传播到其他AS。
      • LOCAL_PREF通常在BGP配置中设置,这个配置依赖于你使用的网络设备或软件。在AWS环境中,如果你使用的是AWS Direct Connect并且在你的网络边界上运行BGP,你可能需要在OnPremise环境(通常本地机房)的网络设备(如路由器)上设置LOCAL_PREF
    • LOCAL_PREF(本地偏好值)是BGP(边界网关协议)中的一个属性,用于在同一个自治系统(AS)内部选择最佳路由。与AS_PATH不同,AS_PATH是用来防止路由循环并在不同自治系统之间选择路径的,而LOCAL_PREF是用来控制自治系统内部的路由选择的。LOCAL_PREF提供了一种机制,允许网络管理员基于策略偏好而不是仅仅基于路径长度来选择路由。

      LOCAL_PREF的工作原理

    • LOCAL_PREF的值越高,该路由就越被偏好。
    • 默认情况下,如果没有设置LOCAL_PREF,BGP会使用其他属性(如AS_PATH长度)来选择路由。
    • LOCAL_PREF只在本地AS内有效,不会传播到其他AS。
    • 在哪里设置LOCAL_PREF

      LOCAL_PREF通常在BGP配置中设置,这个配置依赖于你使用的网络设备或软件。在AWS环境中,如果你使用的是AWS Direct Connect并且在你的网络边界上运行BGP,你可能需要在自己的网络设备(如路由器)上设置LOCAL_PREF

      设置LOCAL_PREF的场景

      假设你有两个Direct Connect连接,连接到同一个AWS VPC,但是通过不同的物理路径。你可能希望主动控制哪个连接作为首选路径。在这种情况下,你可以在接收到来自AWS的路由的BGP配置中设置更高的LOCAL_PREF值,以偏好通过一个连接而不是另一个。

      如何设置

      设置LOCAL_PREF的具体步骤和命令取决于你使用的路由器或网络设备的类型和配置。以下是一个高层次的示例,展示了在Cisco路由器上如何为从特定邻居接收的路由设置LOCAL_PREF

      router bgp YOUR_ASN
       neighbor AWS_DIRECT_CONNECT_IP_ADDRESS route-map SET_LOCAL_PREF in
      
      route-map SET_LOCAL_PREF permit 10
       set local-preference 200
      

      在这个示例中,YOUR_ASN是你的自治系统号,AWS_DIRECT_CONNECT_IP_ADDRESS是AWS Direct Connect连接的另一端的IP地址。这个配置创建了一个路由映射SET_LOCAL_PREF,它将LOCAL_PREF设置为200,适用于从指定邻居接收的所有路由。

    • 注意事项

      • 在实际部署中,设置LOCAL_PREF应该谨慎进行,因为它会影响你的网络中的路由决策。
      • 在AWS环境中,大多数路由决策和优化可以通过其他方法实现,例如使用多个路由表、更细粒度的网络ACL和安全组规则等。因此,在AWS中直接设置LOCAL_PREF的需求可能不是很常见。
      • 在进行任何更改之前,建议详细了解你的网络架构和BGP配置,必要时咨询网络专家。

4. 考虑使用VPN作为备份

  • 对于极端情况,你还可以设置一个基于VPN的备份连接,以防两条Direct Connect专线都出现故障。
  • 在Direct Connect和VPN之间设置自动故障转移,通常涉及到更复杂的路由策略和可能需要使用AWS的虚拟私有网关(VGW)和/或客户网关(CGW)。

5. 测试配置

  • 在生产环境部署之前,务必进行彻底的测试,以确保在主连接失败时,流量能够顺利、自动切换到备用连接。
  • 测试时,可以人为地断开主连接,观察系统是否能够按预期自动切换到备用连接。

6. 监控和维护

  • 设置适当的监控和警报,以便在出现连接问题时及时得到通知。
  • 定期检查和维护你的配置,确保它们仍然符合你的业务需求和AWS的最佳实践。

7. 示例配置说明

为了更具体地说明如何在AWS上设置专线的主备自动切换,这里通过一个简化的例子来展示这个过程。假设你的公司在AWS上运行着关键业务应用,并且你已经有两条AWS Direct Connect专线连接,一条在纽约,另一条在洛杉矶,你想要设置这两条连接的主备自动切换,以确保业务连续性。

步骤1:配置Direct Connect连接

  1. 连接建立:确保两条Direct Connect连接都已经建立,一条设为主连接(纽约),另一条作为备用连接(洛杉矶)。

  2. BGP会话:为每条连接配置BGP会话。假设纽约连接的BGP ASN为65001,洛杉矶连接的BGP ASN为65002。

步骤2:设置路由优先级

  1. 主连接优先级:在纽约连接的BGP配置中,设置AS_PATH较短或LOCAL_PREF较高,以确保在正常情况下,流量优先通过纽约的连接。

  2. 备用连接配置:在洛杉矶连接的BGP配置中,可以通过设置较长的AS_PATH或较低的LOCAL_PREF来确保它只在主连接不可用时被使用。

  3. 这里纽约连接的BGP ASN为65001,相比洛杉矶连接的BGP ASN为65002要短

步骤3:配置健康检查和自动故障转移

  1. 健康检查:使用CloudWatch监控两条连接的状态。

步骤4:测试和验证

  1. 主动测试:在一个维护窗口内,手动断开纽约的连接,模拟故障情况,观察流量是否能够自动切换到洛杉矶的连接。

  2. 监控和日志:确保在测试期间,监控系统和日志记录工具都在正常工作,以便收集足够的信息来分析和验证自动切换是否按预期工作。

步骤5:文档和维护

  1. 文档化:将整个配置过程和测试结果进行文档化,包括任何重要的配置参数和观察到的行为。

  2. 定期审查:定期审查和测试故障转移设置,确保随着环境的变化,这些设置仍然有效和适用。

通过这个例子,你可以看到设置AWS Direct Connect的主备自动切换涉及到多个步骤和配置,包括BGP的详细设置、健康检查的配置以及故障转移策略的实施。务必确保在实际操作中遵循AWS的最佳实践,并在生产环境中部署之前进行充分的测试。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐