如何使用 AWS Global Accelerator 提高应用程序或网站的可用性、性能和安全性?
AWS Global Accelerator 是一项具有 IP 地址的网络层服务。 任意播 这项服务可以将用户流量从距离 AWS 全球网络最近的入口点路由到您的最佳终端节点。本实用技术指南提供了实施步骤、AWS CLI 命令、服务器配置、优化技巧和安全建议,旨在提升示例应用程序/网站的可用性、性能和安全性。.
为什么要使用 AWS 全球加速器?
主要优势:
- 全球任播IP地址: 一到两个静态 IP 地址在全球范围内发布,从而无需在将流量路由到不同地区时更改 DNS。.
- AWS 网络中的最佳路由: 流量在高速、低延迟的 AWS 网络内传输,减少了对公共互联网的使用。.
- 支持 TCP 和 UDP: 适用于对延迟要求低的 HTTP/HTTPS、游戏、VoIP 和交易等应用。.
- 区域间快速故障转移: 集中式健康检查和快速流量路由至健康端点。.
示例应用程序和网站的建议架构
使用 Global Accelerator 的多区域架构示例:
- 两个地区(例如 美国东部 和 eu-west-1其中每个都有 国家图书馆 或者 艾尔布 而其背后则是 EC2/自动扩展组或 Kubernetes。.
- 全球加速器,拥有两个 端点组 (每个到某个区域)并在游戏的 80/443 (TCP) 端口或 UDP 端口上监听。.
- 对于来自 CDN 的静态内容(例如, CloudFront 或拥有 85 个以上位置的企业级 CDN)。.
- 为了防止 DDoS 攻击 AWS Shield 高级版 对于应用层过滤 AWS WAF 利用ALB/CloudFront。.
- 通过监控和警报 CloudWatch 与运营渠道的整合。.
逐步指南:使用 AWS CLI 构建加速器(实际示例)
使用 AWS CLI 创建加速器的关键步骤和示例命令:
aws globalaccelerator create-accelerator --name my-accelerator --ip-address-type IPV4 --enabled输出包括 加速器Arn 此外,还会有专用的任播 IP 地址,您可以在 DNS 中使用。.
aws globalaccelerator create-listener --accelerator-arn <AcceleratorArn> --protocol TCP --port-ranges From=443,To=443为区域创建端点组(例如,us-east-1 到 NLB):
aws globalaccelerator create-endpoint-group --listener-arn <ListenerArn> --endpoint-group-region us-east-1 --endpoint-configurations EndpointId=<NLB_ARN>,Weight=128 --health-check-protocol HTTP --health-check-path /health --health-check-interval-seconds 10 --threshold-count 3重要提示:
- 端点 ID ARN 可以是一个 国家图书馆, 艾尔布或 IP 地址(适用于 EC2 或本地部署)。.
- 途中健康检查
/健康保持并返回简单的 200 响应以表示健康状况。.
简单应用程序示例(Node.js)和健康检查测试
该路径的 Node.js 服务器实例 /健康 它返回 200 响应并显示区域消息:
const http = require('http');
http.createServer((req, res) => {
if (req.url === '/health') return res.writeHead(200).end('ok');
res.writeHead(200, {'Content-Type':'text/plain'});
res.end('Hello from region X');
}).listen(3000);将此应用部署到 EC2 实例或 NLB/ALB 后面的容器中,并确保路径正确。 /健康 每次都返回 200 响应。.
维护客户端 IP 和代理协议
关于保留客户端 IP 地址的要点:
- NLB: 如果您使用 NLB,则 Global Accelerator 可以 客户的真实IP地址 应用程序可以看到原始 IP 地址。.
- ALB: 通常标题
X-转发要完全保留 ALB 上的 IP 地址,请使用代理协议或在 ALB 前面放置 NLB。. - 使用此功能可在 NLB 中注册目标时启用代理协议 v2,并在 NGINX/HAProxy 中处理它。.
启用 NGINX 中的 PROXY v2 示例(使用 流模块 对于 TCP):
stream {
server {
listen 443 proxy_protocol;
proxy_pass backend:443;
proxy_protocol_timeout 10s;
}
}在应用程序的服务器端设置中,处理代理协议。.
针对交易、游戏、网页和人工智能的性能优化
基于应用类型的优化策略:
- 贸易与游戏: 使用跳数最少的 UDP 或 TCP 协议。Global Accelerator 会在 AWS 网络中传输流量;对于交易,会选择终端节点或配置距离最近的区域。 交通拨号 提供最低延迟。.
- 网站和API: 使用 HTTP/2, TLS会话恢复, OCSP装订, 压缩 GZIP/Brotli 以及在 CDN 或 NLB/ALB 上进行压缩。.
- 人工智能/渲染: 对于大数据流量,请使用 NLB 和多区域架构;如果需要 GPU,请使用特定区域中的图形服务器。.
Linux 服务器 TCP 调优(示例命令):
sudo sysctl -w net.core.somaxconn=65535
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo sysctl -w net.ipv4.tcp_fin_timeout=15要使其永久生效,请选择以下选项: /etc/sysctl.conf 添加。.
NGINX 高连接数调优(配置示例):
worker_processes auto;
worker_connections 65536;
keepalive_timeout 65;
tcp_nopush on;
tcp_nodelay on;安全:Web应用防火墙 (WAF)、Shield、TLS 和访问管理
重要安全提示:
- DDoS攻击: 全球加速器 AWS Shield 附带;为了更广泛地覆盖 高级盾牌 启用此功能可保护您的任播 IP 地址。.
- WAF: Global Accelerator 没有自己的 WAF,但你可以 AWS WAF 将其部署在 ALB 或 CloudFront 上,以过滤应用层流量。.
- TLS: 在应用层负载均衡器 (ALB) 或负载均衡器/NGINX 上终止 TLS。如果需要端到端 TLS,也请在端点上使用证书(例如,使用证书)。 ACM).
- 速率限制和机器人防护: 在 WAF 层创建自定义规则,并对 API 使用 JWT 和速率限制。.
- 我是: 通过适当的策略限制对全球加速器运营的访问(例如,对与以下方面相关的操作进行访问控制):
全局加速器:*). - 日志记录: 激活 VPC 流日志,ALB/NLB 访问日志和 CloudWatch Logs 用于监测和分析事件。.
为了抵御大规模 DDoS 攻击并降低风险,启用高级防护并制定快速事件响应手册至关重要。.
性能监控和测试
建议使用的工具和指标:
- CloudWatch 指标 对于全球加速器而言, 流量统计, 新流量计数, 已处理字节数 和 客户端TLS协商错误计数.
- 设置流量增加或减少的警报,并自动响应或通知运营团队。.
- 使用合成支票或 53号公路健康检查 从多个地点进行检查。.
- 使用诸如以下工具进行负载测试 k6, 工作 或者 加特林 并在每个地区进行测试。.
- 使用 RUM 或从用户(游戏玩家、交易员)重要点进行的合成探测来监控延迟。.
实际应用场景和实施技巧
实际问题和实施技巧:
- 区域间快速故障转移: 定义快速路径上的全局加速器健康检查(例如,
/健康)和来自 交通拨号 用于减少/增加流量百分比。. - 减少 DNS 变更维护: 静态任播 IP 允许将流量转发到正常区域而无需更改 DNS。.
- 与企业级CDN结合使用: 边缘静态 CDN(85 个以上位置)将静态文件更靠近用户,而 Global Accelerator 用于动态路由和 API。.
- 成本和效率: Global Accelerator 按小时和数据收费;对于高流量,可将其与 CloudFront + Regional ALB/NLB 等解决方案进行比较。.
比较数据中心位置并选择最佳区域
选择合适地区的建议:
- 就 RTT 而言,最近的区域并不总是最佳选择;用户与 AWS PoP 之间的互联网路径质量以及区域的容量也很重要。.
- 对于游戏玩家和交易者来说,在用户 POP ISP 附近部署 AWS 边缘区域或使用靠近客户的 VPS 可以降低延迟。.
- 对于人工智能和渲染而言,选择一个能够提供 GPU 云和高速存储(NVMe 或 EBS 预置 IOPS)的区域非常重要。.
- 在不同地区之间进行 A/B 测试,并利用全球加速器将流量引导至效果最佳的地区,这是最佳方法。.
示例场景:使用 Global Accelerator 启动网站(步骤概要)
实施步骤概述:
- 在两个区域部署应用程序,并启用 NLB/ALB 和自动扩展。.
- 路径定义
/健康在应用程序中。. - 使用 AWS CLI 或控制台创建加速器和监听器。.
- 创建端点组并添加 NLB/ALB ARN。.
- 将任播 IP 地址绑定到 DNS(A 记录)或为 CDN 设置 CNAME。.
- 启用 Shield Advanced 和 WAF 以进行保护。.
- 启用 CloudWatch 并定义警报;执行负载测试并检查延迟/可用性。.
- 如有需要,可使用公司的 CDN 进行资源分发和会话/cookie 管理,以实现持久会话。.
实用小贴士: 始终将健康检查定义为简短的、与繁重工作负载隔离的、独立于应用程序大部分功能的,以便能够快速执行故障转移。.
最后的一些建议和最佳实践
最佳实践概览:
- 简短独立健康检查的定义。.
- 在 ALB 上使用 ACM 和 TLS 卸载。.
- 对于实时(UDP)流量,使用全局加速器来减少抖动和丢包。.
- 记录 ARN、任播 IP 并准备故障转移运行手册对于运维团队来说至关重要。.
结论和后续步骤
AWS Global Accelerator 是一款强大的工具,可显著提升性能、可用性和安全性,尤其适用于采用 NLB/ALB 和安全服务的多区域架构。结合图形基础设施、专用 VPS 和边缘 CDN,它能够显著改善游戏、交易和 AI 应用的用户体验。.









