随着企业规模的迅速发展,国际化成为了业务拓展的大趋势。而随着企业的国际化,业务上云也被提上了日程。各大公有云提供商,如腾讯,阿里,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 Direct Connect 使用心得_第1张图片

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 Direct Connect 使用心得_第2张图片

该方案的好处是,当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 Direct Connect 使用心得_第3张图片

AWS Direct Connect 使用心得_第4张图片

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

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

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

AWS Direct Connect 使用心得_第5张图片
AWS Direct Connect的路由传递
如果企业一旦选择了如上节中的多专用链接接入的方案,此时路由传递是怎样的呢?
AWS Direct Connect 使用心得_第6张图片
如上图所示网络架构,企业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 Direct Connect 使用心得_第7张图片

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