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 资源的专线连接。
图一 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 信息化经验。
本文转载自 AWS 博客。
原文链接:
https://amazonaws-china.com/cn/blogs/china/a-b-network-block-for-aws-direct-connect/
评论