深入解析 AWS Global Accelerator:加速应用性能
了解 AWS Global Accelerator 在何时能改善全球 TCP 和 UDP 应用的延迟、故障转移及静态 IP 路由。
深入解析 AWS Global Accelerator:加速应用性能
当您的用户远离您的 AWS 区域时,仅靠 DNS 无法始终提供稳定的网络路径。AWS Global Accelerator 通过向客户端提供静态任播 IP 地址,并在流量进入最近的 AWS 边缘站点后,通过 AWS 全球网络传输,从而提升应用性能。
本文将深入解析 Global Accelerator 的工作原理、适用场景、与 CloudFront 的区别,以及在将其置于生产流量前需要检查的事项。
全球挑战:延迟与应用性能
随着应用日益分布式部署并服务于跨洲用户,用户与应用服务器之间的物理距离成为关键因素。数据以光速传输,但穿越公共互联网涉及众多跳转、变化的网络条件和潜在的拥塞点。这可能导致:
- 高延迟:数据从用户到应用再返回所需的时间,直接影响响应速度。
- 丢包:数据包未能到达目的地,需要重传,进一步增加延迟。
- 抖动:数据包到达时间的可变性,对 VoIP 或游戏等实时应用尤其不利。
传统方法(例如在多个区域部署实例并使用区域负载均衡器)虽有一定改善,但初始连接仍通过不可预测的公共互联网路由用户流量。而 Global Accelerator 这样的服务则提供了显著优势。
什么是 AWS Global Accelerator?
AWS Global Accelerator 是一项网络服务,可提升本地和全球用户应用的可用性和性能。它通过将用户流量引导至最近的健康端点,并利用高度可靠且高性能的 AWS 全球网络骨干网 实现。Global Accelerator 不通过公共互联网路由流量,而是利用 AWS 庞大的网络基础设施,优化从用户边缘站点到应用端点的路径。
核心上,Global Accelerator 为您提供静态任播 IP 地址,作为应用的固定入口点。这些 IP 在全球多个 AWS 边缘站点进行广告。当用户连接时,其流量自动定向到最近的边缘站点,然后通过优化的 AWS 私有网络到达指定的应用端点。
AWS Global Accelerator 的工作原理:架构与关键概念
要理解 Global Accelerator 的魔力,让我们分解其基本组件及交互方式:
任播 IP 地址
与唯一对应单个服务器的传统单播 IP 地址不同,Global Accelerator 提供两个静态任播 IP 地址。这些 IP 同时在多个 AWS 边缘站点进行广告。当用户尝试使用这些 IP 连接您的应用时,互联网上的网络路由器会将其流量定向到最近的广告该地址的边缘站点。这确保用户始终连接到地理上接近的 AWS PoP。
AWS 全球网络骨干网
Global Accelerator 的真正力量在于利用 AWS 全球网络。一旦用户流量通过静态任播 IP 到达 AWS 边缘站点,它便通过 AWS 高速、低延迟的私有光纤网络传输到最佳应用端点。这绕过了公共互联网的不可预测性,带来更一致的性能、更低的抖动和更低的延迟。
边缘站点(存在点 - PoPs)
这些是地理分布的数据中心,作为用户流量进出 AWS 全球网络的入口和出口点。Global Accelerator 利用这些 PoP 接收来自用户的传入连接并高效转发。
流量优化与健康检查
Global Accelerator 监控端点健康,并根据监听器、端点组、流量拨号和端点权重的配置,仅将流量路由到健康端点。如果某个端点变得不健康,Global Accelerator 会将新流量路由到另一个健康端点。
监听器、端点组和端点
- 监听器:定义 Global Accelerator 接受来自客户端传入连接的端口和协议(TCP/UDP)。
- 端点组:端点组与特定 AWS 区域关联。您可以有多个端点组,每个对应您的应用资源所在的区域。您还可以为每个组配置“流量拨号”以控制定向到该组的流量百分比。
- 端点:这些是实际服务您的应用的资源。对于标准加速器,常见的端点类型包括:
- 应用负载均衡器 (ALB)
- 网络负载均衡器 (NLB)
- EC2 实例
- 弹性 IP 地址
- 用于自定义路由加速器的 VPC 子网端点(这是另一种加速器类型)。
使用 AWS Global Accelerator 的主要优势
利用 Global Accelerator 为您的全球应用带来多项引人注目的优势:
- 提升性能并降低延迟:通过通过 AWS 全球网络骨干网路由流量,Global Accelerator 显著减少用户经历的延迟和抖动,带来更快速、更响应的应用体验。
- 提高可用性和容错能力:借助自动健康检查和智能流量路由,Global Accelerator 确保用户请求始终定向到健康端点。如果整个区域或端点组发生故障,流量会自动重新路由到另一个区域的下一个最佳可用健康端点。
- 通过静态 IP 简化流量管理:Global Accelerator 提供的两个静态任播 IP 地址永不改变。这简化了 DNS 配置和客户端集成,无需在应用底层端点更改或移动时更新 DNS 记录或客户端配置。
- 增强安全性:到达 Global Accelerator 的流量受益于 AWS Shield Standard 在边缘的 DDoS 保护,帮助保护您的应用免受常见网络层攻击。
- 用于加权路由的流量拨号:您可以使用流量拨号控制定向到不同区域端点组的流量百分比。这对于 A/B 测试、蓝绿部署或计划维护非常有用。
常见用例
AWS Global Accelerator 适用于需要为全球用户提供高性能和高可用性的各种应用:
- 全球 Web 应用:电子商务网站、内容交付平台、用户遍布多个大洲的 SaaS 应用。
- 游戏服务器:降低延迟,改善在线多人游戏的响应体验。
- VoIP 和实时通信:确保视频会议和语音通话的稳定、低延迟连接。
- 物联网后端:为大量地理分散的物联网设备提供一致、低延迟的连接以发送数据。
- 灾难恢复:通过在多个区域维护端点,Global Accelerator 可在发生故障时无缝故障转移到健康区域,支持强大的灾难恢复策略。
设置 AWS Global Accelerator(概念步骤)
设置 Global Accelerator 涉及定义入口点并将其定向到您的应用资源。
- 创建加速器:这是生成两个静态任播 IP 地址的顶级资源。
- 添加监听器:配置加速器将监听传入客户端连接的端口和协议(例如 TCP 80、TCP 443、UDP 53)。
- 创建端点组:为您的应用拥有端点的每个 AWS 区域创建一个端点组。您可以调整“流量拨号”(定向到该组的流量百分比)并配置特定于该组的健康检查设置。
- 添加端点:在每个端点组内,添加您的应用资源(ALB、NLB、EC2 实例、EIP)。您可以为单个端点指定权重,以在端点组内进一步分配流量。
# AWS CLI 中的概念步骤(简化)
# 1. 创建加速器
aws globalaccelerator create-accelerator \
--name MyGlobalAppAccelerator \
--ip-address-type IPV4 \
--enabled
# 2. 创建监听器(例如,用于 HTTP)
aws globalaccelerator create-listener \
--accelerator-arn <accelerator-arn> \
--port-ranges FromPort=80,ToPort=80 \
--protocol TCP \
--client-affinity NONE
# 3. 创建端点组(例如,在 us-east-1)
aws globalaccelerator create-endpoint-group \
--listener-arn <listener-arn> \
--endpoint-group-region us-east-1 \
--traffic-dial-percentage 100 \
--health-check-port 80 \
--health-check-protocol HTTP \
--health-check-path /health \
--endpoint-configurations EndpointId=<your-alb-arn>,Weight=100
提示:始终使用两个静态 IP 地址以实现冗余。Global Accelerator 会自动分配它们。
警告:确保您的安全组和网络 ACL 允许 Global Accelerator 健康检查和应用流量到达您的端点。客户端 IP 保留行为取决于端点类型和配置。
AWS Global Accelerator 与 Amazon CloudFront 对比
虽然两者都利用 AWS 全球网络和边缘站点来提升性能,但它们的主要目的不同:
| 特性 | AWS Global Accelerator | Amazon CloudFront |
|---|---|---|
| 主要目标 | 提升应用的网络性能和可用性(TCP/UDP) | 提升内容交付性能(HTTP/HTTPS) |
| 层级 | 第 4 层 TCP 和 UDP 流量加速 | 第 7 层 HTTP 和 HTTPS 交付 |
| 静态 IP | 是,两个全局静态任播 IP 地址 | 否,使用变化的 DNS 记录进行边缘分发 |
| 缓存 | 否 | 是,在边缘站点缓存内容 |
| 用例 | 游戏、VoIP、API、持久连接、动态内容 | 静态网站、视频流媒体、可下载内容 |
| 端点类型 | ALB、NLB、EC2 实例、弹性 IP;用于自定义路由的 VPC 子网 | S3 存储桶、EC2 实例、负载均衡器、HTTP 源站 |
何时使用哪种?
- 当您需要提升不可缓存内容、API、游戏或任何需要跨区域持久连接或低延迟 TCP/UDP 流量的应用的性能和可用性时,使用 Global Accelerator。
- 当您需要以低延迟向用户交付可缓存的静态或动态内容(图像、视频、网页文件)时,通常用于传统 Web 应用,使用 CloudFront。
同时使用两者也很常见:CloudFront 用于缓存静态内容,Global Accelerator 用于优化到应用动态 API 后端的网络路径。
最佳实践与注意事项
- 健康检查:配置准确反映应用端点运行状态的健壮健康检查。这对于 Global Accelerator 正确地将流量从异常实例路由出去至关重要。
- 流量拨号:利用流量拨号进行受控部署(例如,逐步将流量转移到新区域或版本)和灾难恢复场景。
- 监控与日志记录:将 Global Accelerator 与 CloudWatch 和 CloudTrail 集成,以监控性能指标、流量流向和 API 调用。这有助于了解使用模式并进行故障排除。
- 安全组/NACL:确保后端资源(ALB、EC2)的网络配置允许来自 Global Accelerator 健康检查探针以及 Global Accelerator 保留的客户端 IP(如果未启用或不支持客户端 IP 保留,则来自 Global Accelerator 的 IP 范围)的传入流量。
- 成本管理:了解定价模型,该模型基于预配的加速器数量和传出数据量。优化端点使用以有效管理成本。
总结
当您的应用需要静态全局 IP、快速区域故障转移或为跨区域用户提供更好的 TCP/UDP 路径时,请使用 AWS Global Accelerator。当主要优势是 HTTP 缓存和边缘交付时,请使用 CloudFront。对于生产部署,在转移所有流量之前,先从一个监听器、一两个区域端点组、严格的健康检查和 CloudWatch 告警开始。