1.
概览与前提
说明:本文以 AWS 日本(Tokyo ap-northeast-1 / Osaka ap-northeast-3)为例,目标是通过 ALB/NLB + CloudFront + ElastiCache 优化响应性能。前提:已有 AWS 账号、有 VPC 或可新建,了解基本 IAM 权限(EC2/ELB/CloudFront/ElastiCache)。
2.
准备 VPC 与子网(Console 步骤)
步骤:1) 进入 VPC 控制台 → 创建 VPC(CIDR 例如 10.0.0.0/16);2) 在 ap-northeast-1 创建至少 3 个公有子网(跨可用区);3) 创建私有子网用于应用与 ElastiCache;4) 配置 NAT Gateway(若私有子网需访问外网);5) 配置路由表,关联子网。
3.
配置安全组与 IAM
步骤:1) 为 ALB 建立安全组 sg-alb:允许 80/443 来源 0.0.0.0/0;2) 为应用实例建立 sg-app:允许来自 sg-alb 的 80/443 或 3000 端口;3) 为 ElastiCache 建立 sg-redis:只允许来自 sg-app 的 6379(或集群端口);4) 确保 IAM role 允许 Auto Scaling、ElastiCache 管理与 CloudWatch 写权限。
4.
创建目标组与注册后端
步骤:Console:EC2 → Target Groups → Create target group,类型选择 Instances 或 IP,协议 HTTP/HTTPS,健康检查 Path 填 /health。设置健康检查为 HTTP,间隔 10s,超时 5s,不健康阈值 2,健康阈值 3。注册后端实例或 ECS 服务至目标组。
5.
创建 ALB(应用负载均衡器)
步骤:1) EC2 → Load Balancers → Create Load Balancer → Application Load Balancer;2) 选择对应 VPC、公有子网(三个可用区);3) 选择前面创建的 sg-alb;4) 添加 Listener 80/443;5) Listener Rules 指向目标组并配置 HTTPS 使用 ACM 证书(注意:ALB 的 ACM 证书必须在同一区域创建,若使用 CloudFront,证书需在 us-east-1);6) 启动并验证 ALB DNS。
6.
网络负载均衡(NLB)场景说明
说明:若是 TCP/UDP 或需要静态 IP,选择 NLB。步骤简要:Create Load Balancer→Network Load Balancer→选择跨 AZ 子网→配置 target group 类型为 IP/Instance→注册后端。NLB 更少延迟但不做 HTTP 层面缓存/重写。
7.
Cache 层:部署 ElastiCache(Redis)
步骤:1) ElastiCache 控制台 → Redis → Create;2) 选择 Cluster Mode(推荐 cluster-enabled for scale),放在私有子网并选 sg-redis;3) 选择 Multi-AZ(故障转移)和自动备份;4) 调整参数组:maxmemory-policy 设置为 allkeys-lru,tcp-keepalive 设置合理值;5) 创建后记录 Primary endpoint,用于应用连接(在应用配置中使用内网 endpoint)。
8.
前端缓存与 CDN:配置 CloudFront(覆盖东京机房)
步骤:1) CloudFront → Create Distribution;2) Origin 设置为 ALB 的 DNS(注意:如果 ALB 使用 HTTPS,设置 Origin Protocol Policy 为 HTTPS Only);3) Viewer Protocol Policy 选择 Redirect HTTP to HTTPS;4) Cache Behavior 设置:Cache Based on Selected Request Headers 选择 whitelist(保留 Host、Accept-Encoding、Cookie 若需);5) 设置默认 TTL、Max TTL、Min TTL,根据静态资源可设长缓存(例如 86400);6) 如需自定义证书用于 CloudFront,证书需在 us-east-1。
9.
HTTP 缓存与头部优化
步骤:1) 在应用或 ALB 后端设置正确的 Cache-Control:静态资源 Cache-Control: public, max-age=31536000, immutable;API 响应可设置 no-cache 或 short TTL;2) 启用压缩(Gzip/Brotli)在应用层或通过 ALB 的 Target ;3) 使用 ETag/Last-Modified 管理变更;4) 在 CloudFront 中配置压缩选项和针对常见文件类型的缓存策略。
10.
缓存失效与更新策略
步骤:1) CloudFront 控制台 → Invalidations → Create Invalidation,输入路径如 /assets/*;2) 对于 Redis 缓存,设计合理的过期策略(TTL)与主动删除策略(根据数据变更调用 DEL/UNLINK);3) 若部署蓝绿/滚动发布,确保在发布后触发必要的 CDN invalidation 与缓存清理。
11.
监控、日志与自动扩缩
步骤:1) 启用 ALB Access Logs 到 S3;2) 在 CloudFront 开启访问日志;3) 使用 CloudWatch 指标(ALB 请求数、Target Healthy/Unhealthy、Latency;ElastiCache CPU/Memory、Evictions);4) 配置 Auto Scaling Policy(基于 Target CPU 或 ALB 请求速率)并绑定到 Launch Template,确保跨 AZ 均衡。
12.
安全与合规建议
步骤:1) 为 ALB 配置 WAF(Web ACL)防护常见攻击;2) 使用 ACM 管理证书并定期轮换;3) 对敏感数据启用加密传输并对 ElastiCache 使用认证(Redis AUTH)或使用 Transit Encryption(Cluster 支持);4) 限制管理访问来源 IP。
13.
常见故障排查快速清单
步骤:1) ALB 502/504:检查目标组健康检查,后端服务日志,安全组;2) 高延迟:查看 CloudWatch latency、ElastiCache 命中率(低命中率需优化缓存策略);3) CloudFront 未命中:检查 Cache-Control、Query String/Headers 配置。
14.
问:在 AWS 日本机房使用 CloudFront 是否还能获得低延迟?
答:CloudFront 在全球有边缘节点(东京/大阪有覆盖),将静态资源放到 CloudFront 能显著降低首跳延迟;若用户主要在日本,选择 edge locations 在 ap-northeast 区域并设置合适 TTL 即可获得低延迟。
15.
问:ElastiCache Redis 放在日本机房需要注意什么配置?
答:请将 Redis 实例放在与后端应用相同 VPC/可用区组,启用 Multi-AZ 与自动备份,参数组设置 maxmemory-policy 为 allkeys-lru 并合理设置 maxmemory;如果对延迟敏感,使用 cluster mode 并横向扩展分片。
16.
问:如何在 ALB + CloudFront 架构中正确处理 HTTPS 证书?
答:对 ALB 使用在 ap-northeast-1 创建的 ACM 证书;若前端使用 CloudFront,必须在 us-east-1 创建或上传 ACM 证书给 CloudFront,然后在 CloudFront 的 Viewer Certificate 处选择该证书;Origin Protocol 设置为 HTTPS 且验证证书名称或禁用自签名校验。
来源:性能优化在aws日本机房负载均衡与缓存配置方法