Skip to content

AWS 负载均衡器新手指南

本文档面向 AWS 新手,简明扼要地介绍 AWS 提供的负载均衡服务,帮助您快速理解各类负载均衡器的应用场景、基本概念、使用方法和费用计算方式。

适用对象: AWS 初学者、解决方案架构师、运维工程师


AWS 提供四种负载均衡器,各有不同的应用场景:

类型全称OSI 层级主要用途推荐场景
ALBApplication Load BalancerLayer 7 (应用层)HTTP/HTTPS 流量Web 应用、微服务
NLBNetwork Load BalancerLayer 4 (传输层)TCP/UDP/TLS 流量高性能、低延迟需求
GLBGateway Load BalancerLayer 3 (网络层)第三方虚拟设备防火墙、IDS/IPS
CLBClassic Load BalancerLayer 4/7传统应用不推荐新项目使用

选择建议:

  • 95% 的 Web 应用选择 ALB
  • 需要极致性能或非 HTTP 协议选择 NLB
  • 新项目不要使用 CLB(遗留产品)

ALB 是最常用的负载均衡器,工作在应用层(HTTP/HTTPS),能够根据请求内容(URL、Header、方法等)进行智能路由。

监听器 (Listener)

  • 监听指定端口的传入连接(如 80、443)
  • 可配置多个监听器

目标组 (Target Group)

  • 一组接收流量的后端资源(EC2、容器、Lambda、IP)
  • 每个目标组有独立的健康检查配置

规则 (Rule)

  • 根据条件将流量路由到不同目标组
  • 支持基于路径、主机名、HTTP 头等条件
graph LR
    Client[客户端] --> ALB[Application Load Balancer]
    ALB --> |/api/*| TG1[目标组 1<br/>API 服务器]
    ALB --> |/web/*| TG2[目标组 2<br/>Web 服务器]
    ALB --> |/admin/*| TG3[目标组 3<br/>管理后台]
    TG1 --> EC2_1[EC2 实例 1]
    TG1 --> EC2_2[EC2 实例 2]
    TG2 --> EC2_3[EC2 实例 3]
    TG2 --> EC2_4[EC2 实例 4]

场景 1:基于路径的路由

example.com/api/* → API 服务器
example.com/images/* → 图片服务器
example.com/* → Web 服务器

场景 2:微服务架构

api.example.com/users/* → 用户服务
api.example.com/orders/* → 订单服务
api.example.com/products/* → 产品服务

场景 3:蓝绿部署

  • 10% 流量 → 新版本(绿)
  • 90% 流量 → 旧版本(蓝)
  • 逐步调整比例完成平滑升级

通过 AWS Console:

  1. 创建负载均衡器

    • 服务 → EC2 → 负载均衡器 → 创建
    • 选择 “Application Load Balancer”
  2. 基本配置

    • 名称:my-alb
    • 方案:面向 Internet 或内部
    • IP 地址类型:IPv4 或双栈
  3. 网络配置

    • 选择 VPC
    • 选择至少 2 个可用区的子网
  4. 安全组

    • 允许入站流量(如 HTTP 80、HTTPS 443)
  5. 配置监听器

    • HTTP: 80 → 转发至目标组
    • HTTPS: 443 → 转发至目标组(需要 SSL 证书)
  6. 创建目标组

    • 目标类型:实例、IP、Lambda
    • 协议:HTTP/HTTPS
    • 健康检查路径:/health
  7. 注册目标

    • 选择 EC2 实例
    • 指定端口

通过 AWS CLI:

# 创建 ALB
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-12345 subnet-67890 \
--security-groups sg-12345
# 创建目标组
aws elbv2 create-target-group \
--name my-targets \
--protocol HTTP \
--port 80 \
--vpc-id vpc-12345 \
--health-check-path /health
# 注册目标
aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:... \
--targets Id=i-12345,Port=80 Id=i-67890,Port=80
# 创建监听器
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:...

计费项:

  1. 按小时计费

    • 每个 ALB 每小时:$0.0225(us-east-1)
  2. 按 LCU (Load Balancer Capacity Unit) 计费

    • 每 LCU 每小时:$0.008
    • 1 LCU = 以下任一达到上限:
    • 25 新连接/秒
    • 3,000 活跃连接/分钟
    • 1 GB/小时 (EC2/容器)
    • 0.4 GB/小时 (Lambda)
    • 1,000 规则评估/秒

费用示例(us-east-1):

场景ALB 小时费LCU 费用月度总成本
小型网站 (5 LCU)$0.0225 × 730 = $16.43$0.008 × 5 × 730 = $29.20$45.63
中型应用 (20 LCU)$16.43$0.008 × 20 × 730 = $116.80$133.23
大型应用 (100 LCU)$16.43$0.008 × 100 × 730 = $584.00$600.43

注意: 不同区域价格有差异,以上基于 US East (N. Virginia)。


NLB 工作在传输层(TCP/UDP),性能极高(每秒百万请求),延迟极低(微秒级),保留客户端源 IP。

  • 超高性能:处理突发流量和百万级并发
  • 静态 IP:每个可用区分配固定 IP(可绑定 EIP)
  • 源 IP 保留:后端可以看到真实客户端 IP
  • 协议支持:TCP、UDP、TLS
graph TB
    Client[客户端<br/>IP: 1.2.3.4] -->|TCP 连接| NLB[Network Load Balancer<br/>静态 IP: 54.1.2.3]
    NLB -->|保留源 IP| EC2_1[EC2 实例 1<br/>看到源 IP: 1.2.3.4]
    NLB -->|保留源 IP| EC2_2[EC2 实例 2<br/>看到源 IP: 1.2.3.4]

场景 1:游戏服务器

  • 需要 UDP 协议
  • 要求极低延迟
  • 需要保留客户端 IP 做防作弊

场景 2:高性能数据库代理

  • MySQL、PostgreSQL、Redis 等 TCP 连接
  • 需要客户端 IP 白名单
  • 流量突发大(如活动期间)

场景 3:需要静态 IP 的场景

  • 客户防火墙只能白名单 IP(不能用域名)
  • 第三方 API 回调需要固定 IP

场景 4:容器服务

  • ECS、EKS 的 TCP/UDP 服务暴露

关键差异(与 ALB 对比):

  1. 选择负载均衡器类型时选择 “Network Load Balancer”

  2. 监听器配置

    • 协议:TCP、UDP、TLS、TCP_UDP
    • 端口:任意端口
  3. 目标组配置

    • 协议:TCP、UDP、TLS、TCP_UDP
    • 健康检查:TCP、HTTP、HTTPS
  4. IP 地址设置

    • 可以为每个可用区分配弹性 IP

CLI 示例:

# 创建 NLB
aws elbv2 create-load-balancer \
--name my-nlb \
--type network \
--subnets subnet-12345 subnet-67890
# 创建 TCP 目标组
aws elbv2 create-target-group \
--name my-tcp-targets \
--protocol TCP \
--port 3306 \
--vpc-id vpc-12345 \
--health-check-protocol TCP
# 创建监听器
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--protocol TCP \
--port 3306 \
--default-actions Type=forward,TargetGroupArn=arn:aws:...

计费项:

  1. 按小时计费

    • 每个 NLB 每小时:$0.0225(us-east-1)
  2. 按 NLCU (Network Load Balancer Capacity Unit) 计费

    • 每 NLCU 每小时:$0.006
    • 1 NLCU = 以下任一达到上限:
      • 800 新连接/秒 (TCP)
      • 400 新连接/秒 (TLS)
      • 100,000 活跃连接/分钟 (TCP)
      • 50,000 活跃连接/分钟 (TLS)
      • 1 GB/小时

费用示例(us-east-1):

场景NLB 小时费NLCU 费用月度总成本
小型服务 (5 NLCU)$0.0225 × 730 = $16.43$0.006 × 5 × 730 = $21.90$38.33
中型服务 (30 NLCU)$16.43$0.006 × 30 × 730 = $131.40$147.83
大型服务 (150 NLCU)$16.43$0.006 × 150 × 730 = $657.00$673.43

GLB 用于部署和管理第三方虚拟网络设备(如防火墙、IDS/IPS),工作在网络层(Layer 3)。

graph LR
    Internet[互联网] --> IGW[Internet Gateway]
    IGW --> GWLBE[Gateway Load Balancer<br/>Endpoint]
    GWLBE --> GLB[Gateway Load Balancer]
    GLB --> FW1[防火墙设备 1]
    GLB --> FW2[防火墙设备 2]
    GLB --> FW3[防火墙设备 3]
    FW1 --> GLB
    GLB --> GWLBE
    GWLBE --> App[应用服务器]
  • 部署第三方防火墙(Palo Alto、Fortinet、Check Point)
  • 入侵检测/防御系统 (IDS/IPS)
  • 深度包检测 (DPI)
  • 流量镜像和分析

使用 GLB:

  • 需要第三方安全设备检查所有流量
  • 企业合规要求使用特定安全产品
  • 需要高可用的虚拟设备集群

不使用 GLB:

  • 常规的应用负载均衡(使用 ALB)
  • 网络负载均衡(使用 NLB)
  • 简单的流量分发

计费项:

  1. 按小时计费

    • 每个 GLB 每小时:$0.0125(us-east-1)
    • 每个 GLB Endpoint 每小时:$0.0125
  2. 按 GLCU (Gateway Load Balancer Capacity Unit) 计费

    • 每 GLCU 每小时:$0.004
    • 1 GLCU = 600 新连接/秒 或 60,000 活跃连接/分钟 或 1 GB/小时

费用示例(us-east-1):

组件小时费月度成本
GLB (1 个)$0.0125$9.13
GLBE (2 个)$0.0125 × 2$18.25
GLCU (10 个)$0.004 × 10 × 730$29.20
总计$56.58

CLB 是 AWS 的第一代负载均衡器,已被 ALB 和 NLB 取代。

缺点:

  • 功能有限(不支持基于路径的路由)
  • 不支持 WebSocket、HTTP/2
  • 不支持容器、Lambda
  • 费用通常更高
  • AWS 不再积极开发新功能

迁移建议:

  • HTTP/HTTPS 应用 → 迁移到 ALB
  • TCP 应用 → 迁移到 NLB

仅在以下情况保留 CLB:

  • 维护旧系统,短期内不便迁移
  • 应用依赖 EC2-Classic(已废弃的网络模式)

新项目绝不使用 CLB。


功能ALBNLBGLBCLB
OSI 层级Layer 7Layer 4Layer 3Layer 4/7
协议HTTP, HTTPS, gRPCTCP, UDP, TLSIPHTTP, HTTPS, TCP, SSL
WebSocket支持支持不适用支持
HTTP/2支持不支持不适用不支持
静态 IP不支持支持支持不支持
保留源 IP通过 X-Forwarded-For原生支持原生支持通过 Proxy Protocol
路径路由支持不支持不支持不支持
主机路由支持不支持不支持不支持
Lambda 目标支持不支持不支持不支持
PrivateLink不支持支持支持不支持
每秒请求数万数百万数百万数千
建议使用Web 应用高性能应用安全设备不推荐
graph TD
    Start[需要负载均衡器] --> Q1{什么类型的流量?}
    Q1 -->|HTTP/HTTPS| Q2{需要高级路由?}
    Q1 -->|TCP/UDP| Q3{需要静态IP?}
    Q1 -->|第三方安全设备| GLB[使用 GLB]
    
    Q2 -->|是<br/>路径/主机路由| ALB[使用 ALB]
    Q2 -->|否<br/>简单转发| Q4{需要极致性能?}
    Q4 -->|是| NLB[使用 NLB]
    Q4 -->|否| ALB
    
    Q3 -->|是| NLB
    Q3 -->|否| Q5{需要保留源IP?}
    Q5 -->|是| NLB
    Q5 -->|否| Q6{需要极致性能?}
    Q6 -->|是| NLB
    Q6 -->|否| ALB_HTTP[ALB<br/>配置 TCP 监听器]

推荐配置:

健康检查设置:
协议: HTTP
路径: /health 或 /ping
端口: 应用端口
间隔: 30 秒
超时: 5 秒
健康阈值: 2 次成功
不健康阈值: 3 次失败

健康检查端点要求:

  • 响应时间 < 2 秒
  • HTTP 状态码 200-299
  • 检查依赖服务状态(数据库、缓存等)
  • 轻量级检查(避免消耗大量资源)

获取免费证书:

  1. 使用 AWS Certificate Manager (ACM)
  2. 申请公有证书(免费)
  3. 验证域名所有权(DNS 或邮件验证)
  4. 在负载均衡器监听器中选择证书

配置 HTTPS 监听器:

# 创建 HTTPS 监听器
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--protocol HTTPS \
--port 443 \
--certificates CertificateArn=arn:aws:acm:... \
--default-actions Type=forward,TargetGroupArn=arn:aws:...

安全策略选择:

  • 推荐:ELBSecurityPolicy-TLS13-1-2-2021-06
  • 兼容性:ELBSecurityPolicy-2016-08(支持旧浏览器)

启用跨可用区负载均衡的好处:

  • 流量均匀分布到所有可用区
  • 提高容错能力
  • 避免单个可用区过载

费用影响:

  • ALB: 默认启用,无额外费用
  • NLB: 默认禁用,启用后跨可用区数据传输收费($0.01/GB)

何时启用(NLB):

  • 目标分布不均衡
  • 需要最大化容错能力
  • 流量成本低于单可用区风险

启用访问日志:

# 启用 ALB 访问日志
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--attributes \
Key=access_logs.s3.enabled,Value=true \
Key=access_logs.s3.bucket,Value=my-logs-bucket \
Key=access_logs.s3.prefix,Value=alb-logs

日志包含信息:

  • 客户端 IP 和端口
  • 请求时间和延迟
  • 请求路径和方法
  • 响应状态码
  • 后端目标地址
  • SSL 协议版本

用途:

  • 故障排查
  • 安全审计
  • 流量分析
  • 合规要求

费用:

  • 负载均衡器不收费
  • S3 存储费用:$0.023/GB/月(us-east-1,标准存储)

ALB 关键指标:

指标说明告警阈值建议
TargetResponseTime后端响应时间> 1 秒
HTTPCode_Target_5XX_Count后端 5xx 错误> 10/分钟
HTTPCode_ELB_5XX_Count负载均衡器 5xx 错误> 0
UnHealthyHostCount不健康目标数量> 0
RequestCount请求总数用于容量规划
ActiveConnectionCount活跃连接数超过预期值

NLB 关键指标:

指标说明告警阈值建议
UnHealthyHostCount不健康目标数量> 0
ActiveFlowCount活跃连接数超过容量规划
ProcessedBytes处理的字节数异常增长
TCP_Target_Reset_CountTCP 重置数量> 100/分钟
# 创建后端 5xx 错误告警
aws cloudwatch put-metric-alarm \
--alarm-name alb-high-5xx-errors \
--alarm-description "ALB 后端 5xx 错误过多" \
--metric-name HTTPCode_Target_5XX_Count \
--namespace AWS/ApplicationELB \
--statistic Sum \
--period 300 \
--evaluation-periods 2 \
--threshold 50 \
--comparison-operator GreaterThanThreshold \
--dimensions Name=LoadBalancer,Value=app/my-alb/1234567890 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic
# 创建不健康目标告警
aws cloudwatch put-metric-alarm \
--alarm-name alb-unhealthy-targets \
--alarm-description "ALB 存在不健康目标" \
--metric-name UnHealthyHostCount \
--namespace AWS/ApplicationELB \
--statistic Average \
--period 60 \
--evaluation-periods 1 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions Name=LoadBalancer,Value=app/my-alb/1234567890 \
Name=TargetGroup,Value=targetgroup/my-targets/1234567890 \
--alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic

问题: 实例显示为 “unhealthy”

排查步骤:

  1. 检查安全组

    • 目标实例的安全组必须允许来自负载均衡器的流量
    • ALB:允许负载均衡器安全组的入站流量
    • NLB:允许客户端 IP 范围(NLB 不使用安全组)
  2. 检查健康检查配置

    • 确认健康检查路径返回 200 状态码
    • 验证超时时间是否充足
    • 检查端口是否正确
  3. 查看目标健康状态详情

    aws elbv2 describe-target-health \
    --target-group-arn arn:aws:elasticloadbalancing:...
  4. 测试连接

    # 从负载均衡器所在子网测试
    curl -v http://目标IP:端口/健康检查路径

可能原因:

  1. 后端应用未运行或崩溃

    • 登录 EC2 检查应用状态
    • 查看应用日志
  2. 安全组配置错误

    • 确认目标实例安全组允许流量
  3. 健康检查失败

    • 所有目标都不健康
    • 负载均衡器无可用目标
  4. 目标超时

    • 后端响应时间超过负载均衡器超时设置
    • 增加空闲超时时间
  5. 连接被后端拒绝

    • 检查防火墙规则
    • 验证应用监听正确端口

可能原因:

  1. 后端响应过慢

    • 优化应用性能
    • 增加后端实例数量
  2. 负载均衡器超时设置过短

    • ALB 默认 60 秒,可调整到 1-4000 秒
    aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn arn:aws:elasticloadbalancing:... \
    --attributes Key=idle_timeout.timeout_seconds,Value=300
  3. 后端数据库查询慢

    • 优化数据库查询
    • 添加缓存层

ALB 场景:

  • ALB 默认使用轮询算法,应该是均衡的
  • 检查是否启用了粘性会话(Sticky Sessions)
  • 长连接可能导致不均衡(如 WebSocket)

NLB 场景:

  • NLB 使用流哈希算法(五元组:源IP、源端口、目标IP、目标端口、协议)
  • 来自相同客户端的连接会路由到同一目标
  • 启用跨可用区负载均衡可改善分布

解决方案:

  • 确保目标健康且权重相同
  • 对于 NLB,启用跨可用区负载均衡
  • 监控 CloudWatch 指标确认流量分布

排查步骤:

  1. 检查负载均衡器方案

    • Internet-facing:需要公有子网
    • Internal:只能从 VPC 内部访问
  2. 检查安全组

    • 负载均衡器安全组必须允许客户端入站流量
    • 通常允许 0.0.0.0/0:80 和 0.0.0.0/0:443
  3. 检查子网路由表

    • 公有子网需要路由到 Internet Gateway
    • 私有子网需要路由到 NAT Gateway(如果需要出站)
  4. DNS 解析

    # 检查 DNS 记录
    nslookup my-alb-1234567890.us-east-1.elb.amazonaws.com
    # 测试连接
    curl -v http://my-alb-1234567890.us-east-1.elb.amazonaws.com

优化策略:

  1. 减少规则评估次数

    • ALB 中简化路由规则
    • 合并相似的规则
    • 使用默认操作处理通用流量
  2. 连接复用

    • 启用 HTTP keep-alive
    • 使用连接池
    • 减少新连接建立
  3. 压缩响应

    • 启用 gzip 压缩减少传输字节数
    • 优化静态资源大小
  4. 使用 CloudFront

    • 在 ALB 前加 CloudFront CDN
    • 减少到达负载均衡器的请求数
    • CloudFront 可缓存静态内容

成本对比(小型应用示例):

类型月度成本适用场景
ALB (5 LCU)$45.63一般 Web 应用
NLB (5 NLCU)$38.33TCP/UDP 服务
GLB (10 GLCU)$56.58安全设备集群

选择建议:

  • 不要过度设计:简单 Web 应用不需要 NLB
  • HTTP 应用优先 ALB(功能更丰富,成本相当)
  • 只在必要时使用 NLB(极致性能、静态 IP)

定期检查:

# 列出所有负载均衡器
aws elbv2 describe-load-balancers \
--query 'LoadBalancers[*].[LoadBalancerName,State.Code,CreatedTime]' \
--output table
# 查找无目标的目标组
aws elbv2 describe-target-groups \
--query 'TargetGroups[*].[TargetGroupName,TargetType]' \
--output table
# 检查目标组的目标数量
for tg in $(aws elbv2 describe-target-groups --query 'TargetGroups[*].TargetGroupArn' --output text); do
count=$(aws elbv2 describe-target-health --target-group-arn $tg --query 'length(TargetHealthDescriptions)' --output text)
echo "$tg: $count targets"
done

删除未使用资源:

  • 无流量的负载均衡器
  • 无目标的目标组
  • 未关联的监听器规则

NLB 跨可用区负载均衡:

  • 启用后:$0.01/GB 跨可用区传输费
  • 禁用后:无此费用,但流量分布可能不均

计算示例:

  • 每月 10 TB 跨可用区流量
  • 费用:10,000 GB × $0.01 = $100/月

决策:

  • 流量 < 1 TB/月:启用($10/月容错成本可接受)
  • 流量 > 10 TB/月:评估是否值得($100+/月)
  • 可根据业务需求和预算权衡

AWS WAF (Web Application Firewall) 可以与 ALB 集成,提供应用层防护:

防护能力:

  • SQL 注入防护
  • XSS(跨站脚本)防护
  • 限制请求速率
  • IP 黑白名单
  • 地理位置封禁

配置步骤:

  1. 创建 WAF Web ACL
  2. 添加规则(托管规则或自定义规则)
  3. 关联到 ALB
# 关联 WAF 到 ALB
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123456789012:regional/webacl/... \
--resource-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/...

费用:

  • Web ACL: $5/月
  • 规则: $1/规则/月
  • 请求数: $0.60/百万请求

ALB 可以直接调用 Lambda 函数,实现无服务器架构:

优势:

  • 无需管理服务器
  • 自动扩展
  • 按使用量付费

配置示例:

# 创建 Lambda 目标组
aws elbv2 create-target-group \
--name my-lambda-targets \
--target-type lambda
# 注册 Lambda 函数
aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:... \
--targets Id=arn:aws:lambda:us-east-1:123456789012:function:my-function
# 授权 ALB 调用 Lambda
aws lambda add-permission \
--function-name my-function \
--statement-id alb-invoke \
--action lambda:InvokeFunction \
--principal elasticloadbalancing.amazonaws.com \
--source-arn arn:aws:elasticloadbalancing:...

Lambda 函数接收的事件格式:

{
"requestContext": {
"elb": {
"targetGroupArn": "arn:aws:elasticloadbalancing:..."
}
},
"httpMethod": "GET",
"path": "/path",
"queryStringParameters": {"key": "value"},
"headers": {
"host": "my-alb-1234567890.us-east-1.elb.amazonaws.com",
"user-agent": "curl/7.64.1"
},
"body": "",
"isBase64Encoded": false
}

11.3 固定响应和重定向(仅 ALB)

Section titled “11.3 固定响应和重定向(仅 ALB)”

ALB 可以直接返回固定响应或重定向,无需后端服务器:

用途:

  • HTTP 到 HTTPS 重定向
  • 维护页面
  • 简单的 API 响应

配置示例:

# HTTP 到 HTTPS 重定向
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:... \
--priority 1 \
--conditions Field=path-pattern,Values='/*' \
--actions Type=redirect,RedirectConfig='{Protocol=HTTPS,Port=443,StatusCode=HTTP_301}'
# 返回固定 JSON 响应
aws elbv2 create-rule \
--listener-arn arn:aws:elasticloadbalancing:... \
--priority 2 \
--conditions Field=path-pattern,Values='/health' \
--actions Type=fixed-response,FixedResponseConfig='{StatusCode=200,ContentType=application/json,MessageBody="{\"status\":\"healthy\"}"}'

通过 VPC Endpoint Service,可以让其他 AWS 账户或 VPC 安全地访问您的服务:

使用场景:

  • 跨账户服务共享
  • SaaS 服务提供
  • 合作伙伴集成

配置步骤:

# 创建 VPC Endpoint Service
aws ec2 create-vpc-endpoint-service-configuration \
--network-load-balancer-arns arn:aws:elasticloadbalancing:... \
--acceptance-required
# 授权其他账户访问
aws ec2 modify-vpc-endpoint-service-permissions \
--service-id vpce-svc-1234567890abcdef0 \
--add-allowed-principals arn:aws:iam::123456789012:root

# 列出所有负载均衡器
aws elbv2 describe-load-balancers
# 列出指定负载均衡器的监听器
aws elbv2 describe-listeners --load-balancer-arn <ARN>
# 列出目标组
aws elbv2 describe-target-groups
# 查看目标组健康状态
aws elbv2 describe-target-health --target-group-arn <ARN>
# 注册目标
aws elbv2 register-targets --target-group-arn <ARN> --targets Id=<instance-id>
# 注销目标
aws elbv2 deregister-targets --target-group-arn <ARN> --targets Id=<instance-id>
# 修改负载均衡器属性
aws elbv2 modify-load-balancer-attributes --load-balancer-arn <ARN> --attributes Key=<key>,Value=<value>
# 删除负载均衡器
aws elbv2 delete-load-balancer --load-balancer-arn <ARN>
# 删除目标组
aws elbv2 delete-target-group --target-group-arn <ARN>
# Web 应用
Protocol: HTTP
Path: /health
Port: 80
Interval: 30
Timeout: 5
HealthyThreshold: 2
UnhealthyThreshold: 3
Matcher: 200
# API 服务
Protocol: HTTP
Path: /api/health
Port: 8080
Interval: 15
Timeout: 3
HealthyThreshold: 2
UnhealthyThreshold: 2
Matcher: 200-299
# 数据库代理 (NLB)
Protocol: TCP
Port: 3306
Interval: 30
Timeout: 10
HealthyThreshold: 3
UnhealthyThreshold: 3

负载均衡器安全组(Internet-facing):

入站规则:
- HTTP: 0.0.0.0/0:80
- HTTPS: 0.0.0.0/0:443
出站规则:
- All traffic: 0.0.0.0/0 (或指向目标安全组)

目标实例安全组(ALB):

入站规则:
- HTTP: <ALB安全组>:80
- HTTPS: <ALB安全组>:443
- SSH: <管理IP>:22 (可选)
出站规则:
- All traffic: 0.0.0.0/0

目标实例安全组(NLB):

入站规则:
- TCP/UDP: <客户端IP范围>:<应用端口>
- SSH: <管理IP>:22 (可选)
出站规则:
- All traffic: 0.0.0.0/0
资源默认限制可申请提升
ALB 数量(每区域)50
NLB 数量(每区域)50
目标组数量(每区域)3000
监听器(每 ALB)50
规则(每 ALB)100
目标(每目标组)1000
证书(每 ALB)25
ALB 子网数量最少 2 个,最多每个可用区 1 个
NLB 弹性 IP每个可用区 1 个

选型建议:

  • Web 应用、微服务 → ALB
  • 游戏服务器、高性能服务 → NLB
  • 安全设备、虚拟网络设备 → GLB
  • 新项目不要用 CLB

成本管理:

  • 预估 LCU/NLCU 使用量
  • 优化连接和规则
  • 定期清理未使用资源
  • 考虑使用 CloudFront 减少负载

可靠性:

  • 至少跨 2 个可用区部署
  • 配置合理的健康检查
  • 启用访问日志和监控
  • 设置 CloudWatch 告警

安全性:

  • 使用 HTTPS(免费 ACM 证书)
  • 配置安全组限制访问
  • 考虑集成 WAF(ALB)
  • 定期审查访问日志

推荐学习路径:

  1. 实践基础配置

    • 创建一个简单的 ALB + EC2 环境
    • 配置健康检查和监听器
    • 测试流量分发
  2. 探索高级功能

    • 基于路径/主机的路由
    • 粘性会话
    • Lambda 集成
  3. 优化和监控

    • 设置 CloudWatch 告警
    • 分析访问日志
    • 进行成本优化
  4. 自动化

    • 使用 CloudFormation/Terraform 自动化部署
    • 集成 CI/CD 流程
    • 实现蓝绿部署或金丝雀发布

官方文档:

定价信息:

最佳实践:


文档版本: v1.0
更新日期: 2025-11-28
作者角色: AWS 云架构师
适用区域: 全球所有 AWS 区域(费用基于 US East N. Virginia)