亚马逊AWS (Amazon Web Service)提供了连接AWS VPC (Virtual Private Cloud)和客户本地网络的多种方法,能让客户在可靠、弹性、性价比高的情况下访问位于AWS数据中心的资源。之前挨踢小茶也在文章使用软件VPN,硬件VPN或AWS DirectConnect连接客户网络与AWS介绍了AWS提供的不同连接方法,那么如何才能好好地利用这些连接方式,创建高可用的(High Availability)的互联网络呢?
每一个客户的内部网络情况都不太一样,有一些客户的网络使用了服务提供商的的MPLS线路,有一些客户使用自己基于因特网的site-to-site VPN或者DMVPN,还有的使用专线等其他线路。但是总体来说,要达到最高效的连接,需要保证排除单点故障(双设备,双线路,双服务提供商等)、使用active/active的双活路由或者ECMP (Equal-Cost Multipath)、动态负载均衡和自动切换线路。具体来说,可以参照以下这些要点:
- 能用动态路由协议的情况下,不要用静态路由。动态路由协议能动态监测路由状态,所以当有线路/设备出现故障的时候,路由能自动切换到可行的路径上。这种情况下,路由的切换时间能达到秒级(BGP默认Dead Time是90秒)或者毫秒级(开启BGP的BFD Bidirectional Forwarding Detection功能这个时间能减少到0.9秒),对业务的影响相对较小。动态路由协议还能避免未来网段的更新所需要做的手动静态路由调整。
- 当选择AWS Direct Connect (DX)线路的时候,选择多服务提供商。不同的服务提供商使用的可能是不一样的物理线路和中转设备,因此能减少同时出现故障的概率。
- 使用BGP动态路由协议,结合BGP AS-Path prepending,MED,Local Preference来控制路由的走向和出入口。
- 保证如果双线的情况下,如果一条线路出现故障,另一条线路能承载所有企业的网络带宽。
下面会举几个具体的例子,来说明使用VPN和AWS Direct Connect (DX)如何混合组网
冗余的Active/Active VPN连接
可以看到下图,左边是AWS的VPC网络,右边是客户的内部网络。其中客户的两个站点是有自己的线路互联的(标记蓝色的线路),每个站点有一台CGW (Customer Gateway),并且有相应的Internet线路。这两台CGW分别与VPC内的VGW (Virtual Private Gateway)建立基于IPSec的Site to Site VPN。需要注意的是,这里的每一个VPN线路都是有2个VPN连接的,因为对于每一个VPN连接,VGW会提供位于位于不同数据中心的2个VPN节点供用户连接。因此图中的设计实际上是4个VPN连接。
要达到高可用和路由自动切换,并且保证从VPN访问10.0.0.0/16的网络要通过CGW1,访问10.1.0.0/16网络要通过CGW2,并且任何一条VPN线路出现故障可以自动切换路由到另一条VPN线路,有2个比较有效的方法:
- CGW1和CGW2同时向AWS VPC公告10.0.0.0/15的汇聚路由,并且CGW1公告10.0.0.0/16的明细路由,CGW2公告10.1.0.0/16的明细路由。这样在默认的情况下,AWS VPC会首先选择更明细的路由。当其中一个VPN线路出现故障或者CGW设备出现故障的时候,相应的明细路由会消失,因此VPC会选择汇聚路由对客户的网络进行访问,也就切换到了另一条VPN线路了。关于VPN的路由选择优先级,可以查看文档Route Tables and VPN Route Priority。
- CGW1和CGW2同时公告10.0.0.0/16和10.1.0.0/16明细路由给AWS VPC,但是对于不是自己的网段,增加AS-PATH前缀,让其变成次优路由。这样在默认情况下,AWS VPC会选择AS PATH更短的路由,而且当其中一个VPN线路或者CGW设备出现故障的时候,路由也能自动切换。
具体选择要取决于目前客户内网的路由架构,如果已经在使用AS-PATH进行选路了,就可以沿用方法2,否则可能方法1更好。
小结
虽然你可以选择不同的ISP所提供的因特网线路来分担线路同时出现故障的概率,但是Internet是不稳定的线路,抖动很大,所以在性能上来说,这不一定是一种很好的架构。
冗余的Active/Active AWS Direct Connect (DX) 线路
想要有更稳定的线路,更大的带宽,更小的延迟和更安全的线路,当然要上AWS Direct Connect (DX) 线路了!在不考虑预算的前提下,最好的做法就是双DX线路的设计了。在这里,你的DX线路可以选择直接向AWS申请的1Gbps/10Gbps的专线,或者是向APN合作伙伴申请的50Mbps~500Mbps的专线。在这里,为了达到更高的冗余性,应该选择不同的DirectConnect数据中心和不同的APN合作伙伴,这样可以降低线路/设备同时故障的风险。具体的路由设计和前一个方案的相似,就不在这里赘述了。
AWS Direct Connect (DX) 为主,VPN线路为备用
如果没有预算搭建两条DX线路,但是想利用专线的稳定性以及高可用架构的优势,那么可以采取一种折中的方案:一条AWS Direct Connect (DX)专线,一条跑在普通Internet上的VPN线路。这样企业既能享用专线带来的安全性,高带宽和速度,还能避免单点故障,保持高可用。
在这样的设计下,CGW1和CGW2设备需要同时公告10.0.0.0/15的汇总路由给AWS VPC,因为在默认情况下,VGW收到来自Direct Connect的路由会更优,因此所有去往客户网络的流量会优先经过CGW2。而如果CGW2或者DX线路出现故障的时候,路由会自动切换到CGW1。当然,如果需要,也可以将某些特定的明细路由从CGW1公告出去(比方说测试环境,开发环境),这样当AWS VPC访问这些数据的时候可以不占用昂贵的DX线路。
小结
因为AWS还支持VPN CloudHub模式(也就是将AWS数据中心当成企业网络的DMVPN网络的HUB),因此如果在CGW2再创建一条基于Internet的VPN线路的话,可以保证如果企业内部网络出现故障(比方说蓝色线路),Data Center 1和Data Center 2还能通过AWS VPC进行中转,保证另一层面的高可用!
总结
每个公司的企业网络都不太一样,因此具体情况需要具体分析,这样才能找到适合企业接入AWS的网络选型。
文章评论