![Direct Connect A/B段双活实现](https://static001.infoq.cn/resource/image/92/8f/92bc063748de844a7234bc7d627a2a8f.jpg)
1、AWS 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.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html
1.2 AWS Direct Connect 高可靠设计
如下图一所示,客户建立了一条本地数据中心到 AWS 的专线意味着客户具备了一条从本地数据中心到 AWS Direct Connect Location 的连接,在该连接的基础上可以通过私有虚拟接口连接到虚拟私有网关(VGW),从而实现本地数据中心到 AWS VPC 资源的专线连接。
![](https://static001.infoq.cn/resource/image/a2/62/a2daf4e5648062bb397d9404b37e2962.png)
图一 Direct Connect 示意图
任何资源都存在发生故障导致暂时不可用的情况。因此,为保障 Direct Connect 的高可靠性,我们通常建议客户使用两条专线,并将专线连接到 AWS 不同的两个 Direct Connect Location 上。如图二所示:
![](https://static001.infoq.cn/resource/image/af/1a/afa2df3db9873fff92088a41694eac1a.png)
图二 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 的通信,同时两条线路互为备份。
![](https://static001.infoq.cn/resource/image/2d/a6/2de55d50e660e3cbb1bdf0c83e06aea6.png)
图三 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 为备份路由。
![](https://static001.infoq.cn/resource/image/7e/0e/7e25e0de26823a13d376bf7f7257fb0e.png)
图四 AWS 到本地数据中心路由控制
2.2 本地数据中心到 AWS 路由控制
如图五所示,在主备场景中我们推荐使用 Local Preference 来控制本地数据中心到 AWS 的路由。但是在 A/B 段双活的场景下,目的网段只有 VPC Block 一个网段,而我们要区分本地数据中心的源 IP 地址段来选择路由。显然 Local Preference 的方式是行不通。
![](https://static001.infoq.cn/resource/image/ca/6c/ca3a700cb7c6ec6889f2ccead614a26c.png)
图五 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 段走策略路由二
![](https://static001.infoq.cn/resource/image/f3/fc/f35d9f3bfb0df6df5d3428b975e9f8fc.png)
图六 CGW A 故障 HA 切换
如图七,当 Direct Connect Location C 故障或者专线故障时,HA 切换:CGW A 通过 iBGP 从 CGW B 学习到 AWS 路由
![](https://static001.infoq.cn/resource/image/72/c2/72ef5cd0369a7d9e081f17432c565fc2.png)
图七 Direct Connect Location C 故障 HA 切换
如图八,当 CGW B 故障时,HA 切换:策略路由二失效,A 段策略路由一,B 段静态路由一
![](https://static001.infoq.cn/resource/image/04/fe/04149624603e77f7135110f92be8c0fe.png)
图八 CGW B 故障 HA 切换
如图九,当 Direct Connect Location D 故障或者专线故障时,HA 切换:CGW B 通过 iBGP 从 CGW A 学习到 AWS 路由
![](https://static001.infoq.cn/resource/image/06/14/0651307be432a5dbf58699d9078ee714.png)
图九 Direct Connect Location D 故障 HA 切换
以上 HA 切换分析,我们针对 CGW、专线连接、Direct Connect Location 等故障进行了切换分析。由于资源限制,并没有给出详细的配置。实际使用中需要客户结合 AWS 服务和本地数据中心网络设备综合考虑,以实现策略路由和动态路由配合最终实现 A/B 段双活。
作者介绍:
张涛
AWS 解决方案架构师,AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内和全球的应用和推广。加入 AWS 之前曾就职于 H3C、网易等公司,拥有丰富的企业 IT 信息化经验。
本文转载自 AWS 博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/a-b-network-block-for-aws-direct-connect/
评论