使用 AWS 全球加速器来提升应用性能

使用 AWS Global Accelerator 提升应用程式性能

by Abhinav Bannerjee 和 Fenil Patel,2024 年 8 月 5 日,发表于 , , 分享


文章重点

  • AWS Global Accelerator 通过智能路由技术可显著降低延迟,提高用户的应用程式性能和可靠性。
  • 传统 DNS 路由与 Global Accelerator 的任何播送路由方式存在明显差异,后者能提供更优的全球流量管理。
  • 静态 IP 地址的管理使得基于 Global Accelerator 的架构更具弹性和稳定性。
  • 可以利用 AWS CloudFormation 自动化部署,迅速实现基于 Global Accelerator 的架构部署。

在快速变化的网络应用及 API环境中,为所有客户提供快速、可靠和安全的访问至关重要。然而,传统应用架构经常面临全球应用使用者的延迟和可靠性挑战,这是由于全球互联网基础设施的复杂性所造成的。使用 能让你通过智能地在 AWS 全球网络中路由流量,优化至应用程式的路径,最终达成更快的性能和更高的可靠性。

本篇文章将探讨使用 Global Accelerator的优势、添加加速器的情境,以及在将应用程式与该服务整合时可以应用的性能测试策略。同时,我们还将探索与其他 AWS 服务的整合,并提供使用 的实用部署范例。

首先,我们将回顾 Anycast 路由与基于 DNS 的路由之间的差异,之后解释 Global Accelerator如何简化全球流量路由,并增强应用程式的安全性。

比较 Amazon Route 53 的 DNS 路由与 Global Accelerator 的 Anycast 路由

在我们深入了解如何将 Global Accelerator 应用于您的应用程式之前,让我们先来检视 DNS路由的运作方式,因为这是今天最常用的路由形式。企业通常在其应用架构中配置 DNS 路由,使用如 这样的服务来引导用户流量至不同的端点。客户的流量根据地理位置的接近性、健康检查及您所配置的路由政策进行路由。

例如,假设您在不同的 AWS 区域上托管一个网站,并使用 Route 53 的 进行 DNS 解析。在这种情况下,Route 53 动态将域名解析为最近健康的 EC2 实例的 IP地址,确保您的用户根据其位置被引导至网站的最佳端点。

虽然 Global Accelerator 和 Route 53 都可以引导流量,但它们在底层机制上存在明显不同。Route 53 在 DNS层运作,根据配置的路由政策将域名解析为 IP 地址。相较之下,Global Accelerator 使用 Anycast IP地址将流量路由至最近的健康端点,驱动流量进入 AWS全球网络,从而减少延迟并增强可靠性。对于许多需要实时流量优化的场景,例如视频串流平台或在线游戏服务,Global Accelerator 是比基于 DNS的路由更优的选择。

Global Accelerator 确保每位用户能够路由到延迟最低的边缘位置,实现流畅的播放体验,最小化缓冲时间。

Global Accelerator 的静态 IP 地址

除了通过任何播送路由提升用户体验外,Global Accelerator 还帮助您简化 IP 地址管理。Global Accelerator为您的加速器提供了一组静态 IP 地址,这些地址来自强大的 AWS 边缘网络。对于 IPv4,您将获得两个静态 IPv4地址,而对于双堆栈配置,您将获得总共四个地址:两个静态 IPv4 地址和两个静态 IPv6 地址。您还可以选择将自己的 IP 地址范围(BYOIP)带入 Global Accelerator,并将 IPv4 地址从自己的地址池分配给您的加速器。

在 Global Accelerator 中的 IP 地址为您的客户提供了静态进入点,使您能够为他们提供一致且无缝的体验。使用静态 IP地址时,当您为标准加速器新增弹性负载平衡(ELB)、EC2 实例或弹性 IP 地址资源时,您的客户可以使用这些 IP 地址来访问您的资源。

Global Accelerator 的静态 IP 地址还简化了在可用性区或 AWS 区域之间移动端点的过程,而无需更新您的 DNS配置或更改面向客户的应用程序。这种灵活性使您能够扩展基础架构,同时确保不间断提供服务。无论您是扩展至新区域还是升级现有设置,拥有静态 IP地址都能帮助您轻松过渡,维持可靠性并减少停机时间。

将 Global Accelerator 添加至架构中

您可以选择多种方式将 Global Accelerator 整合到现有架构中。例如,可以考虑以下内容:

  • 前端网页应用程式 – 在 EC2 实例上托管的网页应用前使用 Global Accelerator,以实现全球用户的快速可靠访问。
  • API 端点 – 通过将 Global Accelerator 与负载平衡器整合来提高 API 端点的性能。
  • 微服务 – 优化您在多个 AWS 区域部署的微服务之间的流量。

为了说明 Global Accelerator 如何与应用架构整合,假设您有一个网站在两个 AWS 区域的 EC2实例后面运行,使用应用负载平衡器。以下图(图 1)显示了这种部署的示例架构。

![架构图显示用户如何经由 Amazon Route 53删除)

图 1:用户的 DNS 请求由 Amazon Route 53 解析并通过公共互联网路由至应用负载平衡器。

要将 Global Accelerator 添加至此架构中,您可以按照下列步骤操作:

  1. 创建加速器。
  2. 为 80 端口添加 TCP 监听器。
  3. 创建两个端点组,每个区域一组。
  4. 将应用负载平衡器作为区域端点添加,每个负载平衡器添加到加速器的端点组中。

以下图(图 2)显示了更新后的架构。

![架构图显示用户如何经由 AWS Global Accelerator删除)

图 2:用户请求由 Global Accelerator 边缘位置解析,并通过 AWS 全球网络路由至应用负载平衡器。

评估性能与测试

在您将 Global Accelerator 整合入架构之前和之后,我们建议您全面评估应用性能。例如,使用 Apache JMeter 或 Locust这样的工具来评估响应时间、延迟和用户整体体验。为验证 Global Accelerator 在提升全球访问中的有效性,模拟不同的流量模式和地理分布。

例如,可以假设您使用以下 curl 命令评估基线性能:

bash curl -I http://YourALBDNSName

在此命令中,将 “YourALBDNSName” 替换为您用于路由到应用的 DNS 名称。在将 Global Accelerator整合到您的架构后,可以再次进行性能测试。使用以下第二个 curl 命令进行测试:

bash curl -I http://YourAcceleratorDNSName

在此命令中,将 “YourAcceleratorDNSName” 替换为您加速器的 DNS 名称(详情请参考 )。将这些结果与基线性能测试进行比较,检查响应时间的提升、延迟的减少及整体性能的增强。透过这些测试,您可获得前后对比,量化改进效果并验证 Global Accelerator 在优化用户全球访问方面的有效性。

通过 Global Accelerator 加强安全性

您可以将 Global Accelerator 无缝地整合到其他 AWS 服务中,以增强应用程式的安全性,减轻潜在威胁。

例如,您可以将 Global Accelerator 与 整合,以强化安全措施并抵御潜在的分布式拒绝服务 (DDoS) 攻击。新增 Shield Advanced 能够为基础设施级别的 DDoS 威胁提供附加防御层,同时保持操作效率。这对于依赖于网络负载平衡器的应用程式尤为重要,例如游戏、媒体串流服务和物联网系统。

当您与 Shield Advanced 整合时,Global Accelerator 优化流量流向网络负载平衡器,同时通过 Shield Advanced提供基于边缘的 DDoS 监测和缓解。将 Shield Advanced 整合进来可让网络负载平衡器有效处理合法的请求,并充分利用 GlobalAccelerator 提供的所有优势。

使用 AWS CloudFormation 加快部署

借助 AWS CloudFormation,您可以更轻松地自动化、测试和部署应用程式的基础架构。在本节中,我们提供了一个 CloudFormation模板,用于部署一个常见的与 Global Accelerator 整合的架构。该架构包括应用负载平衡器、安全组和流畅部署所需的组件。此 CloudFormation 堆栈创建的加速器会根据您指定的监听器端口、规则和其他值将进来的流量路由至目标实例。

在您部署模板之前,确保已在您的 AWS 帐户中配置所需的 IAM 权限及其他先决条件。然后,将模板复制并粘贴到 AWS CloudFormation控制台中,根据您自己的资源和应用需求进行调整,快速部署和配置 Global Accelerator 用于样本应用程式。务必将所有占位符值替换为您 AWS环境中具体的值,如注释所述。


Resources: MyLoadBalancer: Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties: Subnets: \- subnet-abc # 用您 AWS 帐户中的实际子网 ID 替换 \- subnet-xyz # 用您
AWS 帐户中的实际子网 ID 替换 SecurityGroups: \- !GetAtt MySecurityGroup.GroupIdLoadBalancerAttributes: \- Key: idle_timeout.timeout_seconds Value: '60'

MyListener: Type: 'AWS::ElasticLoadBalancingV2::Listener' Properties:
DefaultActions: \- Type: fixed-response FixedResponseConfig: StatusCode: 200ContentType: text/plain MessageBody: 'OK' LoadBalancerArn: Ref: MyLoadBalancerPort: 80 Protocol: HTTP

MySecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: GroupDescription:
MyLoadBalancer 的安全组 VpcId: vpc-abc # 请添加您的 VPC ID SecurityGroupIngress: \-
CidrIp: 0.0.0.0/0 # 用实际的 CIDR 范围替换,以允许进入流量 IpProtocol: -1 #
注意:这个安全组的权限非常宽松,允许来自任何 IP 地址的所有进入流量。 # 考虑根据具体要求缩小安全组规则的范围来限制访问。

MyTargetGroup: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties:
VpcId: vpc-abc # 请添加您的 VPC ID Protocol: HTTP Port: 80 HealthCheckEnabled: trueHealthCheckIntervalSeconds: 30 HealthCheckPath: '/health' HealthCheckPort: 80HealthCheckProtocol: HTTP TargetType: instance Targets: \- Id: i-instanceID #
用您目标实例的 ID 替换

MyAccelerator: Type: 'AWS::GlobalAccelerator::Accelerator' Properties: Name:
Myaccelerator # 用唯一名称替换您的加速器名称 IpAddressType: IPV4 Enabled: true

MyAcceleratorListener: Type: 'AWS::GlobalAccelerator::Listener' Properties:
AcceleratorArn: Ref: MyAccelerator PortRanges: \- FromPort: 80 ToPort: 80Protocol: TCP ```

当您部署此堆栈时,CloudFormation 将在指定的 AWS区域中启动应用负载平衡器、目标组、安全组、监听器和加速器。为完成解决方案,通过控制台或使用 [AWS 命令行界面 (AWSCLI)](https://aws.amazon.com/cli/)
将应用负载平衡器作为端点添加至加速器。如需多区域支持,请在另一区域中启动此模板或将其修改为使用 。

## 总结

在本篇文章中,我们讨论了 AWS Global Accelerator如何为全球流量路由、提升性能和增强应用程式安全性提供完整解决方案。通过使用Anycast路由和与其他AWS服务的简便整合,GlobalAccelerator确保您的应用程式获得可靠的用户体验,并减少延迟。无论您是管理前端网页应用程式、API 端点还是微服务,GlobalAccelerator 都能让您在当今数字化环境中获得所需的灵活性和可扩展性。今天就开始使用 GlobalAccelerator,展现您的全球应用程式的全部潜力,提升客户体验。

## 作者介绍

![Abhinav删除)

### Abhinav Bannerjee

Abhinav 是一名来自德克萨斯州的高级解决方案架构师。他与各行各业的客户紧密合作,帮助他们利用亚马逊网络服务(AWS)扩大业务。他还专注于帮

Leave a Reply

Required fields are marked *