随着企业规模的迅速发展,国际化成为了业务拓展的大趋势。而随着企业的国际化,业务上云也被提上了日程。各大公有云提供商,如腾讯,阿里,Amazon,在公有云实施方面均有不同的方案和产品。作为互联网新兴企业,我们也赶上了企业上云的潮流,经过两年多的实践和运维,从我个人角度出发分享一下AWS产品中Direct Connect功能的使用心得。

AWS Direct Connect是什么

AWS Direct Connect 是AWS提供的一种云服务解决方案,通过该功能可以使企业网络与现有的AWS Direct Connect Location(AWS Direct Connect Location详情见:https://amazonaws-china.com/directconnect/features/?nc1=h_ls )之间建立专用网络连接。
简单来说,即可以通过AWS合作伙伴专线将AWS云当成企业IDC/办公室的扩展,帮助企业在无需建设当地IDC的情况下实现业务的就近部署和快速扩容。

【AWS征文】AWS Direct Connect 使用心得

AWS Direct Connect的配置步骤

AWS Direct Connect的配置步骤在AWS官网有详细的介绍,这里就不过多的描述。

AWS配置步骤详见:

https://docs.aws.amazon.com/directconnect/latest/UserGuide/WorkingWithConnections.html 本文只对配置中需要注意的部分进行说明:

  1. 如采用运营商专线对接AWS DX,那么最好是向运营商申请发起Connection而不是Virtual interfaces(VIF), 这样可以增加企业自行维护的便利性。一旦需要临时手动断开AWS接入链路,可以直接删除VIF并快速重建而不需要运营商配合。

  2. 在创建VIF时,注意BGP配置中 Your router peer IP指的是运营商的路由器IP;Amazon router peer IP为AWS 设备的IP。(叫法很坑,注意区分)

  3. AWS DX中,一个BGP会话最多可发布100条路由,超过限制BGP会话会中断。

AWS Direct Connect如何实现高可用性

一般来讲,如果是通过AWS合作伙伴专线(即运营商专线)来将企业IDC与AWS进行连接,都会选择双运营商进行双链路接入,以实现运营商链路的高可用性。但是,是不是选择了不同运营商的不同链路对于AWS Direct Connect来说就实现了高可用呢?当然不是。

AWS DX的高可用具体有以下几种方案:

  1. 双链路接入到不同的AWS Direct Connect Location
  2. 此方案也是AWS官方推荐的方案,如果使用了两家运营商的链路进行接入,那么两条链路推荐接入到不同的AWS Direct Connect Location。如下图:

【AWS征文】AWS Direct Connect 使用心得

该方案的好处是,当AWS DX出现全location故障或者维护时,依旧可以保证一条链路的可用性。(当然,全站点维护或者故障的概率会很小。)

  1. 双链路接入到同一个AWS Direct Connect Location的不同设备

在某些情况下,可能会因AWS Direct Connect Location以及所选AWS合作伙伴资源有限或者与企业IDC间距离远近等因素而无法选出来两个不同的location。因此,两家运营商的链路都将接入到同一个AWS Direct Connect Location,这种情况如何实现高可用?

这种场景也是我们正在使用的。如果选择了该方案也不必担心。可以让一家运营商的线路先与AWS进行Direct Connect(DX)连接,然后在Direct Connect-Connections中查到当前线路连接到的AWS设备名称。(运营商侧一般事先无法得知将要连接到的AWS设备的名称。)

将该设备名称提供给另外一家运营商,从而帮助两家运营商将线路接入到同一个AWS Direct Connect Location的两台不同的设备,实现设备层面的高可用。如下图所示。

【AWS征文】AWS Direct Connect 使用心得

【AWS征文】AWS Direct Connect 使用心得

需要注意的是,该方案只能实现设备层面的高可用,而无法解决全location故障的问题。

  1. 单运营商链路接入同一个AWS Direct Connect Location的不同设备
    以上两种场景均为多链路接入的情况,因需要两条运营商专线接AWS DX,因此专线成本相对较高。对于一些不重要的业务来说不太划算,能不能只使用一条运营商线路呢?
    当然可以,只是需要舍弃运营商链路级的高可用。

当仅有一条运营商链路进行接入时,可以向运营商申请发起两个到AWS的专用链接到不同的AWS 设备上,如此便可以实现AWS设备级的高可用性。如下图所示。

【AWS征文】AWS Direct Connect 使用心得

AWS Direct Connect的路由传递

如果企业一旦选择了如上节中的多专用链接接入的方案,此时路由传递是怎样的呢?

【AWS征文】AWS Direct Connect 使用心得

如上图所示网络架构,企业IDC的路由10.2.0.0/24分别通过ISPA和ISPB的链路传递给了AWS Direct Connect,因此与DX关联的VGW下的VPC就可以学到企业IDC的路由,即可实现云上主机与IDC的通信。

又因为是多连接的方案,如果是传统的网络架构,我们会考虑在路由传递上有没有可能形成环路。况且DX因功能限制,无法对接收或者宣告的BGP路由进行过滤。那么我们就要考虑对于DX来说,从ISPA的路由会不会传递给ISPB?答案是会。是不是所有的路由都会传递呢?也不是。

这也是我们在业务上云过程中踩过的一个坑,对此深有体会。经过多方协助并分别查看AWS VIF从/对两条链路的收发的BGP路由条目,得到如下结论:

AWS DX的路由传递遵循以下原则:如果一条路由从ISPA学到了,同时从ISPB也学到了,那么不会再将这条从ISPA学到的路由发送给ISPB。如果从ISPB没学到这条路由,那么AWS DX就会将从ISPA学到的路由传递给ISPB,见下图。

【AWS征文】AWS Direct Connect 使用心得

如此就有可能造成路由环路,尤其是当企业有多个分公司通过ISP MPLS ***专网接入了AWS云时,情况就会更加突出。
当然,为了避免这个问题,可以将DX改造为DXGW。DXGW的内容以后有机会再分享。