亚马逊AWS官方博客

Direct Connect A/B段双活实现

1AWS Direct Connect简介

AWS Direct Connect 通过标准的以太网光纤将您的内部网络连接到 AWS Direct Connect 位置。光纤的一端接到您的路由器,另一端接到 AWS Direct Connect 路由器。有了此连接以后,您就可以创建直接连接到公共 AWS 服务(如 Amazon S3)或 Amazon VPC 的虚拟接口,从而绕过您的网络路径中的 Internet 服务提供商,即我们通常所说的专线服务。本文主要介绍在专线高可靠的前提下如何实现基于A/B段的双活。

1.1 AWS Direct Connect主要组成部分

建立一条专线,AWS Direct Connect主要包含以下两个组件:

  • 连接:在 AWS Direct Connect 位置创建连接以建立从您的本地数据中心到 AWS 区域的网络连接。
  • 虚拟接口:创建虚拟接口以启用对 AWS 服务的访问。公有虚拟接口允许对公共服务的访问,如 Amazon S3。私有虚拟接口允许对您 VPC 的访问。

有了专线连接,您就具备了你的本地资源和AWS资源通过专有线路通信的能力。此时我们可以根据需要建立公有虚拟接口或者私有虚拟接口和AWS资源互联。本文主要讨论针对私有虚拟接口的互联实现。

私有虚拟接口允许你与AWS VPC资源进行访问,但前提是私有虚拟接口要与VPC联通。AWS提供了两种与VPC联通的服务:VGW(Virtual private gateway)和DX Gateway(Direct Connect gateway)。关于VGW(Virtual private gateway)和DX Gateway(Direct Connect gateway)的使用,这里不再赘述,可参考AWS官方文档:

https://docs.thinkwithwp.com/directconnect/latest/UserGuide/Welcome.html

1.2 AWS Direct Connect 高可靠设计

如下图一所示,客户建立了一条本地数据中心到AWS的专线意味着客户具备了一条从本地数据中心到AWS Direct Connect Location的连接,在该连接的基础上可以通过私有虚拟接口连接到虚拟私有网关(VGW),从而实现本地数据中心到AWS VPC资源的专线连接。

图一 Direct Connect 示意图

任何资源都存在发生故障导致暂时不可用的情况。因此,为保障Direct Connect的高可靠性,我们通常建议客户使用两条专线,并将专线连接到AWS不同的两个Direct Connect Location上。如图二所示:

图二 Direct Connect 高可靠设计

在这种高可靠连接的情况下,当一个Direct Connect Location由于种种原因暂时不可用时,可以快速切换到另外一条专线中,以保障客户业务的连续性。所以,通常情况下两条专线采用完全主备的配置模式。在AWS Direct Connect中,我们推荐客户网关(CGW)和VPC虚拟私有网关(VGW)间使用BGP协议进行路由的传递。因此,常用的方式是使用AS Patch控制由AWS到客户本地数据中心的路由,使用Local Preference控制客户本地数据中心到AWS的路由。

主备模式一定程度保障了客户业务连续性,当主用线路故障时,通过BGP路由协议可以快速切换到备用线路(为加快BGP协议路由切换,可以在CGW端使能BFD检测)。很明显纯粹的主备模式下,备用线路多数时间完全处在空闲状态,如何才能提升线路的利用率呢?下面我们一起来看看如何通过策略路由的方式实现基于A/B段的双活。

 

2、AWS Direct Connect A/B段双活技术实现

 

A/B段双活即我们将客户本地数据中心资源使用的IP地址段划分为A和B两类地址段,同时将A和B两类地址段与AWS互通的流量分配到两条专线中。如图三示意,A段使用专线C,B段使用专线D,实现本地数据中心与AWS的通信,同时两条线路互为备份。

图三 A/B段双活实现效果示意

2.1 AWS到本地数据中心路由控制

如图四所示,前文提到过,AWS 虚拟专用网关(VGW)可以通过BGP协议中AS Path长度来选择路由。因此,我们可以在CGW端通过为不同网段添加AS Path来控制AWS端使用的线路:CGW A正常通告A类网段,为B类网段Prepend AS;CGW B正常通告B类网段,为A类网段Prepend AS。这样,AWS VGW端会将到达A类网段的主路由设置为CGW A,CGW B为备份路由;同理,AWS VGW端会将到达B类网段的主路由设置为CGW B,CGW A为备份路由。

图四 AWS到本地数据中心路由控制

2.2 本地数据中心到AWS路由控制

如图五所示,在主备场景中我们推荐使用Local Preference来控制本地数据中心到AWS的路由。但是在A/B段双活的场景下,目的网段只有VPC Block一个网段,而我们要区分本地数据中心的源IP地址段来选择路由。显然Local Preference的方式是行不通。

图五 A/B段双活示意

基于源IP地址段控制路由,我们不难想到策略路由。本文重点说明基于策略路由实现流量调度,因此数据中心本地网关Router和CGW间我们使用静态路由的方式(流量常规情况下主要靠策略路由调度),实际使用中客户可以根据需求选择动态路由协议。

首先,客户CGW间建立iBGP链接,以使能AWS地址段在CGW A和CGW B间的传播。基于策略路由调度客户A/B网段的流量主要由数据中心本地网关Router上的两条静态路由和两条策略路由实现:

  • 静态路由一:指向CGW A,主静态路由,Track CGW A
  • 静态路由二:指向CGW B,备份静态路由,路由优先级低于静态路由一
  • 策略路由一:源自A类段的流量指向CGW A,Track CGW A
  • 策略路由二:源自B类段的流量指向CGW B,Track CGW B

3、HA验证

 

基于以上配置,我们来验证各种故障情况下HA切换。如图六,当CGW A故障时,HA切换:静态路由一、策略路由一失效。此时A段走备份静态路由二,B段走策略路由二

图六 CGW A故障HA切换

如图七,当Direct Connect Location C故障或者专线故障时,HA切换:CGW A通过iBGP从CGW B学习到AWS路由

图七 Direct Connect Location C故障HA切换

如图八,当CGW B故障时,HA切换:策略路由二失效,A段策略路由一,B段静态路由一

图八 CGW B故障HA切换

如图九,当Direct Connect Location D故障或者专线故障时,HA切换:CGW B通过iBGP从CGW A学习到AWS路由

图九 Direct Connect Location D故障HA切换

以上HA切换分析,我们针对CGW、专线连接、Direct Connect Location等故障进行了切换分析。由于资源限制,并没有给出详细的配置。实际使用中需要客户结合AWS服务和本地数据中心网络设备综合考虑,以实现策略路由和动态路由配合最终实现A/B段双活。

本篇作者

张涛

AWS 解决方案架构师,AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内和全球的应用和推广。加入AWS之前曾就职于H3C、网易等公司,拥有丰富的企业IT信息化经验。