由于我之前工作地区的监管部门要求我们按地理位置划分用户数据并遵守数据主权法,因此我深知运行需在多个国家/地区部署基础设施的全球工作负载的复杂性。当扩展范围超出原始数据中心时,可用性、性能和故障转移都会变成大麻烦。客户告诉我们,无论是基于可用性、性能还是监管角度,他们的运行范围都要覆盖多个地区。他们很高兴能够通过 AWS CloudFormation 为工作负载提供模板,用 Amazon DynamoDB 全局表复制数据库,以及用 AWS SAM 部署无服务器工作负载。所有这些功能只需几分钟即可执行完毕,并能够为受众提供一种全球式体验。客户还告诉我们,他们非常喜欢 AWS 的区域隔离功能,他们可以凭借这项功能来减少爆炸半径并提高可用性。不过,他们也希望能获得一些帮助来将应用程序的其他部分拼接在一起。
AWS Global Accelerator 简介
基于前述原因,我很高兴地宣布推出 AWS Global Accelerator。这是一种网络服务,能够帮助组织无缝地将流量路由到多个区域,并为其最终用户提高可用性和性能。AWS Global Accelerator 凭借 AWS 庞大的高可用性无拥塞全球网络,将互联网流量从用户定向到在 AWS 区域运行的应用程序。AWS Global Accelerator 会根据地理位置、应用程序运行状况和您配置的权重将用户定向到您的工作负载。此外,AWS Global Accelerator 还会为您的应用程序分配全局唯一且固定不变的静态 Anycast IP 地址,让您无需在应用程序扩展时更新客户端。您现在可以开始预置 Accelerator 并将其与运行在网络负载均衡器、Application Load Balancer 或弹性 IP 地址上的应用程序相关联。然后,AWS Global Accelerator 会从 AWS 网络分配两个静态 Anycast IP 地址,作为工作负载的入口点。AWS Global Accelerator 支持 TCP 和 UDP 两个协议,对目标终端节点进行运行状况检查,并将流量从运行状况不佳的应用程序中路由选择分离出来。您可以在一个或多个 AWS 区域内使用 Accelerator,进而为最终用户提供更高的可用性和性能。媒体、金融和游戏组织常用的低延迟应用程序将受益于 Accelerator 对 AWS 全球网络的使用以及用户与边缘网络之间的优化。
图 1 – 工作原理
以下是您需要了解的一些事项:
静态 Anycast IP – Global Accelerator 使用静态 IP 地址作为进入到您在任意数量的 AWS 区域内托管的应用程序的固定入口点。这些 IP 地址是来自 AWS 边缘站点的 Anycast,这意味着这些 IP 地址是从多个 AWS 边缘站点宣布的,进而使流量能够以尽可能接近您的用户的方式进入 AWS 全球网络。您可以将这些地址与区域性 AWS 资源或终端节点相关联,如网络负载均衡器、Application Load Balancer 和弹性 IP 地址。在修改或替换终端节点时,您无需进行任何面向客户端的更改,也不必更新 DNS 记录。Accelerator 的 IP 地址是静态的,并将用作面向用户的应用程序的前门。
AWS 的全球网络 – 通过 Accelerator 路由的流量会遍历受到良好监管、无拥塞且冗余的 AWS 全球网络(而非公共互联网)。客户端会根据客户端位置、运行状况检查和配置的权重路由到最佳区域。流量将通过公布 Accelerator Anycast IP 地址的 AWS 边缘站点进入,并且请求将从该 IP 地址通过优化的路径路由到应用程序。
客户端状态 – 您能够利用 AWS Global Accelerator 构建以状态为基本要求的应用程序。在初始连接后,有状态的应用程序会将用户路由到同一终端节点。Global Accelerator 通过将客户端请求者的 SourceIP 设置为维护状态的标识符来实现此目的,且不管端口和协议如何。
AWS Global Accelerator 操作
为了熟悉 AWS Global Accelerator 的功能,我将使用两个 EC2 托管的 WordPress 部署,这两个部署均位于 Application Load Balancer 之后。为了测试 AWS Global Accelerator 的全球性,我将应用程序部署到了新加坡和东京地区。图 3 展示了我们满意的路径。流量通过边缘站点公布的两个 Anycast IP 地址,从我们的客户端发送到最近的边缘站点。我们的请求通过 AWS 全球网络路由到 Accelerator,而 Accelerator 选择最近的运行状况良好的终端节点组。Application Load Balancer 终止我们的请求,并将其传递给向我们提供内容的 WordPress 实例。
图 2 – 用户流程
我根据此处的说明创建了两个内容服务器。我为投放内容的来源地区更改了主页横幅,以便确定路由的路径。创建完内容服务器后,我们为每个服务器构建一个 Application Load Balancer,并等待其进入良好运行状态。
图 3 – Shaun 的全球网站
创建 Global Accelerator 极其简单,只需选择一个名称,指定侦听器类型(WordPress 的端口 80 和 TCP)并为每个区域创建一些终端节点组。让我们为 Accelerator 配置一个侦听器,以供客户端在
接入边缘网络后连接。由于我们正在投放 HTTP 流量,因此我们自然而然地选择了端口 80。我使用 SourceIP 启用了客户端关联。SourceIP 将我们的测试客户端重新定向到第一次连接的同一区域和应用程序。
终端节点组是我们的 Accelerator 目标,默认情况下,每个组的流量拨号为 100。关闭流量拨号后,客户端将重定向到其他终端节点组或其他 AWS 区域,方便执行维护或处理意外的流量激增情况。就我们的实验而言,我将东京和新加坡地区的拨号默认为 100。
图 4 – 配置终端节点组
运行状况检查是一种功能强大的工具,既可以在简单配置中使用,也可以提供深层应用程序感知。今天,通过使用默认的 HTTP 运行状况检查,我正对一个简单的网站进行检查,并在默认路径上轮询 200 OK HTTP。要完成配置,我们需要使用之前创建的 Application Load Balancer 填充终端节点组。
图 5 – 将 ALB 添加至终端节点组
配置完所有内容后,我们就可以开始通过 Accelerator 分配的两个 Anycast IP 地址路由选择流量。可以通过您的浏览器、HTTP 客户端或 curl 来完成该操作。由于我想测试全球受众,因此我将使用代理在亚洲、美洲和欧洲的不同地点设置我的位置,以了解我们的流量是如何被路由选择的。
图 6 – 请求正被分发至我们的全球网站。
AWS Global Accelerator 最强大的功能之一是能够在不到一分钟的时间内在各区域之间发生故障。我设置了 1 个负载测试来以每秒 100 个请求的工作负载访问站点。另外,我将关闭新加坡服务器,测试我们的流量路由到东京终端节点的速度。
03:15,流量开始通过我们的 Accelerator 进行路由选择。3:30,我关闭了新加坡实例。3:31,东京已经处理了近 4,000 个请求,并且正在投放所有流量。3:35,我启用了新加坡服务器。由于运行状况检查需要预热(90 秒),我们直到 3:38 才看到恢复结果。如果配置更激进的运行状况检查,我们将在五分钟内看到出现故障并完成恢复的结果!
可用性和定价
在 AWS Global Accelerator 中,您需要为部署的每个加速器以及流经该加速器的主方向上的流量付费。您创建加速器资源是为了将流量定向到 AWS 全球网络上的最佳终端节点。通常情况下,客户会为每个应用程序设置一个加速器,但较复杂的应用程序可能需要多个加速器。对于每个正在运行的每个加速器,您需要支付固定的小时费用以及超过标准数据传输费率的增量费用,也称为 Data Transfer-Premium 费用 (DT-Premium)。DT-Premium 按流量主方向上的每小时计费,即应用程序的入站流量或从应用程序到网络上的用户的出站流量。
固定费用:一个加速器在您的账户上每运行一个小时(不足一小时按一小时计),需支付 0.025 USD。
Data Transfer-Premium 费用 (DT-Premium):通过 AWS 网络传输的每千兆字节数据的费率。DT-Premium 费率取决于为请求服务的 AWS 区域(源)以及响应被定向到的 AWS 边缘站点(目标)。您只会被收取数据传输主方向上的 DT-Premium 费用。
AWS Global Accelerator 现已在下列区域推出:美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(俄勒冈)、美国西部(加利福尼亚北部)、欧洲(爱尔兰)、欧洲(法兰克福)、亚太地区(东京)以及亚太地区(新加坡)。
本文转载自 AWS 技术博客。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论