1.
项目概述与需求
1) 目标:为台湾地区电商提供高可用、弹性伸缩的Web服务架构。
2) 流量模式:日常峰值约5k RPS,促销峰值可达20k RPS;目标P95响应<500ms。
3) 可用区选择:建议使用离台最近的区域(如ap-east-1 香港或 ap-southeast-1 新加坡),并跨2-3个可用区部署。
4) SLA与容量规划:设计最小双活(min instances=2),扩展上限可达8实例以应对突发峰值。
5) 依赖组件:ALB(应用负载均衡)、Auto Scaling、Route53、CloudFront、AWS WAF、Shield、RDS/ElastiCache等。
2.
网络与域名设计
1) VPC规划:示例CIDR 10.0.0.0/16,公有子网10.0.1.0/24、私有子网10.0.2.0/24,跨2个AZ。
2) 子网与路由:ALB放公有子网,应用服务器放私有子网,通过NAT Gateway访问外网。
3) 域名解析:使用Route53做权威DNS,配置ALIAS记录指向ALB DNS名,设置低TTL用于故障切换。
4) 安全组:ALB安全组允许80/443来自0.0.0.0/0;应用SG仅允许来自ALB的TCP 80/443。
5) SSL与证书:使用ACM申请公有证书,绑定到ALB Listener(443),启用HTTP->HTTPS重定向以强制加密。
3.
ALB(应用负载均衡)配置细节
1) Listener设置:HTTP 80接受并重定向到HTTPS 443;HTTPS 443使用ACM证书。
2) Target Group:协议HTTP,健康检查路径/health,健康检查间隔30秒,超时5秒,连续不健康阈值2。
3) 会话与路由:默认禁用会话粘滞;针对登录/会话状态使用Redis/ElastiCache存储会话。
4) 安全策略:启用ALB的安全策略(TLS 1.2+),配置WAF ACL绑定到ALB以防常见攻击。
5) 日志与监控:开启ALB访问日志存到S3,CloudWatch监控请求数、目标响应时间和5xx错误率。
4.
弹性伸缩(Auto Scaling)策略与实例配置
1) 启动模板:示例使用Amazon Linux 2 + Nginx,用户数据用于自动拉取最新应用包并注册到Target Group。
2) 实例规格:首选 t3.medium(2 vCPU,4GB),高负载可切换为 m5.large(2 vCPU,8GB)。
3) ASG参数:min=2, desired=2, max=8。冷却时间300秒以避免抖动。
4) 自动伸缩策略:基于CPU的目标跟踪(目标利用率60%),以及基于请求数的步进策略(RPS阈值扩大实例)。
5) 健康替换:ASG结合ALB健康检查,发现不健康实例自动替换并回滚流量。
以下为常用实例与性能估算表(基准值,实测依应用有关):
| 实例类型 | vCPU/RAM | 单实例峰值RPS | 建议并发连接 |
| t3.medium | 2 / 4GB | ~2,500 RPS | ~2,000 连接 |
| m5.large | 2 / 8GB | ~4,500 RPS | ~4,000 连接 |
| c5.large | 2 / 4GB | ~6,000 RPS(CPU密集) | ~3,500 连接 |
5.
CDN与DDoS防护设计
1) CDN使用CloudFront:前置静态资源缓存(图片、JS、CSS),减少回源压力,设置长缓存头(Cache-Control 7天)。
2) 边缘防护:CloudFront结合WAF进行请求筛选,配置IP黑白名单、速率限制(rate-based rules)。
3) DDoS防护:启用AWS Shield(标准免费版)并针对大客户考虑Shield Advanced,监控SYN/UDP洪水并自动缓解。
4) WAF策略:封禁已知恶意UA、SQL注入模式、XSS规则,并将阻断日志发送到Kinesis做实时告警。
5) 缓存降级:当回源压力大时,CloudFront可配置Stale-while-revalidate策略,保证静态资源可用性。
6.
真实案例:台湾电商促销活动迁移实录
1) 背景:某台湾电商在双11前夕从单机迁移到AWS,目标承受突发20k RPS。
2) 初始配置:部署在ap-east-1,ALB + ASG (t3.medium,min=2,max=8),CloudFront缓存静态资源,RDS读写分离。
3) 促销数据:活动高峰时刻总峰值约18,500 RPS,ASG自动扩展至8实例,平均CPU ~55%,P95延迟从600ms下降到420ms。
4) 防护效果:使用WAF拦截约12万条恶意请求,Shield无大额计费事件,回源流量下降约65%。
5) 成本与运维:促销月实例费用(按按量计费)峰值约USD 2,200,平时约USD 450/月;日志与监控成本另计。
6) 经验总结:合理设置健康检查与冷却时间可避免震荡;将会话状态外置(Redis)可使实例无状态,便于水平扩展。
来源:台湾云服务器亚马逊负载均衡配置与弹性伸缩部署案例