AWS ELB 负载均衡实战:ALB vs NLB 选型、配置与省钱完整教程(2026最新版)

📅 · AWS 国际版实战教程 - ChengziCloud

一句话结论

Meta Description: AWS ELB负载均衡实战教程:Application Load Balancer与Network Load Balancer选型对比、Target Group配置、健康检查调优、SSL证书部署、GCLB定价详解,附ALB vs NLB价格对比表与常见问题FAQ。

本文要点
  • 为什么你需要AWS ELB?
  • ALB vs NLB 深度对比:选哪个?
  • ALB实战:从零创建负载均衡器
  • NLB实战:高性能TCP负载均衡
  • 健康检查配置:自动故障转移的关键
  • SSL/TLS证书部署:免费HTTPS
  • Cross-Zone Load Balancing:跨可用区均衡
  • ELB与其他AWS服务的集成

Meta Description: AWS ELB负载均衡实战教程:Application Load Balancer与Network Load Balancer选型对比、Target Group配置、健康检查调优、SSL证书部署、GCLB定价详解,附ALB vs NLB价格对比表与常见问题FAQ。

关键词: AWS ELB、ALB负载均衡、NLB负载均衡、AWS负载均衡教程、Target Group、AWS健康检查、ALB vs NLB、AWS SSL证书、AWS弹性负载均衡

一、为什么你需要AWS ELB?

当你的应用跑在多台EC2实例上时,用户请求应该由谁来分发?手动DNS轮询?自己搭Nginx反向代理?这些方案在小规模下能用,但一旦涉及健康检查、SSL终结、自动故障转移,就会变得脆弱且难以维护。AWS ELB(Elastic Load Balancing)是AWS官方的负载均衡服务,帮你解决这些问题:自动分发流量、检测后端故障、终止SSL、支持跨可用区部署。

决策口诀:HTTP/HTTPS选ALB,TCP/UDP高性能选NLB,gRPC选ALB。 90%的Web应用用ALB就够了。

AWS ELB目前有两个主力产品:

负载均衡器全称工作层级核心优势适用场景
ALBApplication Load BalancerL7(应用层)路径路由、主机路由、HTTP头部匹配、gRPC支持Web应用、微服务、HTTP API
NLBNetwork Load BalancerL4(传输层)超低延迟(毫秒级)、百万级TPS、静态IP游戏服务器、IoT、金融交易、TCP/UDP应用

老一代的Classic Load Balancer(CLB)仍在运行但不再推荐新创建,本文不展开。

二、ALB vs NLB 深度对比:选哪个?

选错负载均衡器意味着要么多花钱,要么性能不够。下面是全方位对比:

对比维度ALBNLB
工作层级L7(HTTP/HTTPS/gRPC)L4(TCP/UDP/TLS)
延迟通常 1-5ms通常 <1ms
最大吞吐数万RPS百万级RPS
SSL终结✅ 支持,免费ACM证书✅ 支持
WebSocket✅ 原生支持✅ 透传
gRPC✅ 支持❌ 不支持
路径路由✅ /api/ → 后端A, / → 后端B❌ 不支持
主机路由✅ api.example.com → 后端A❌ 不支持
固定IP❌ 无(用Global Accelerator可获取)✅ 每个可用区一个弹性IP
源IP保留❌ 通过X-Forwarded-For获取✅ 直接保留客户端IP
静态IP数量0每AZ一个(最多16个AZ)
适用协议HTTP, HTTPS, gRPC, WebSocketTCP, UDP, TLS
连接耗尽默认300秒可配置(无限制模式)
价格模式LCU按需计费按小时+按流量
免费套餐❌ 无免费额度❌ 无免费额度

2.1 ALB定价详解

ALB按负载均衡器小时数+LCU(Load Balancer Capacity Units)计费:

费用项us-east-1 价格说明
负载均衡器小时数$0.0225/小时(≈$16.2/月)每个ALB固定费用
LCU费用$0.008/LCU/小时按最高LCU使用量计费
数据处理费$0.008/GB前100TB/月

LCU是衡量ALB负载的综合指标,取以下四项的最大值:新建连接数、活跃连接数、数据处理量、规则评估次数。对于中小型网站(日均1万PV以下),LCU费用通常在$1-5/月。

2.2 NLB定价详解

NLB按固定小时费+数据处理费计费,无LCU概念:

费用项us-east-1 价格说明
负载均衡器小时数$0.0225/小时(≈$16.2/月)每个NLB固定费用
数据处理费(TCP/UDP/TLS)$0.006/GB每GB流量费
数据处理费(LCU)$0.006/LCU/小时按最高LCU使用量计费
弹性IP$0.005/小时/每个每个AZ一个EIP,未使用也收费

2.3 月度成本对比表

以中等流量Web应用(日均10万PV,平均响应10KB,月传输约30TB)估算:

费用项ALBNLB
负载均衡器小时数$16.20$16.20
LCU费用≈$15(假设4 LCU)$0
数据处理费≈$240(30TB × $0.008)≈$180(30TB × $0.006)
弹性IP$0≈$10.8(3 AZ × $0.005/h × 720h)
月度总计≈$271≈$207

💡 NLB在大流量场景下更便宜,但缺少ALB的应用层路由能力。选型核心:功能需求优先于价格差异。

三、ALB实战:从零创建负载均衡器

3.1 前置准备

  1. 至少2台EC2实例在同一VPC内
  2. 每台实例上运行Web服务(如Nginx监听80端口)
  3. 实例所在安全组允许80/443入站

3.2 控制台创建ALB

步骤1:进入负载均衡器控制台

  • 打开 AWS Console → EC2 → Load Balancers → Create Load Balancer
  • 选择 Application Load Balancer

步骤2:基本配置

  • 名称:my-alb
  • 方案:Internet-facing(面向公网)或 Internal(内网)
  • IP地址类型:IPv4

步骤3:网络映射

  • VPC:选择你的VPC
  • 映射:至少选择2个可用区(如 us-east-1a, us-east-1b)
  • 每个AZ选择一个公有子网

步骤4:安全组

  • 创建新安全组或选择已有安全组
  • 入站规则:允许 HTTP (80) 和 HTTPS (443) 来自 0.0.0.0/0

步骤5:路由(Target Group)

  • 选择"新建目标组"
  • 目标类型:Instances(或 IP,用于ECS/Fargate)
  • 协议/端口:HTTP:80
  • VPC:选择同一VPC
  • 健康检查路径:/(根据你的应用调整)

步骤6:注册目标

  • 选择你要注册的EC2实例
  • 指定端口:80

步骤7:审核并创建

创建后等待1-2分钟,状态变为Active即可通过DNS名称访问。

3.3 AWS CLI创建ALB


// 创建Target Group
aws elbv2 create-target-group \
  --name my-target-group \
  --protocol HTTP \
  --port 80 \
  --vpc-id vpc-xxxxxxxx \
  --health-check-path / \
  --health-check-interval-seconds 30 \
  --health-check-timeout-seconds 5 \
  --healthy-threshold-count 3 \
  --unhealthy-threshold-count 2

// 创建ALB
aws elbv2 create-load-balancer \
  --name my-alb \
  --type application \
  --subnets subnet-aaa subnet-bbb \
  --security-groups sg-xxxxxxxx

// 注册实例到Target Group
aws elbv2 register-targets \
  --target-group-arn arn:aws:elasticloadbalancing:...:targetgroup/my-target-group/xxx \
  --targets Id=i-111111 Id=i-222222

// 创建监听器(HTTP → Target Group)
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:...:loadbalancer/app/my-alb/xxx \
  --protocol HTTP \
  --port 80 \
  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:...:targetgroup/my-target-group/xxx

3.4 高级路由配置

ALB的核心能力是基于规则的路由,支持三种条件:

路由条件示例用途
路径匹配/api/* → 后端AAPI路由分流
主机匹配api.example.com → 后端B多域名分发
HTTP头部X-Debug: true → 后端C灰度发布/调试路由

控制台配置路径路由示例:

  1. 进入ALB → Listeners → 点击HTTP:80的"View/Edit rules"
  2. 点击"+"添加规则
  3. 添加条件:Path is /api/*
  4. 添加动作:Forward to api-target-group
  5. 保存

四、NLB实战:高性能TCP负载均衡

4.1 NLB创建要点

NLB创建流程与ALB类似,但有关键区别:

  • IP地址类型:选择 IPv4(默认会分配弹性IP)
  • 跨可用区:NLB默认跨AZ,但客户端连接固定到一个AZ(延迟更低)
  • Target Group协议:支持TCP、UDP、TLS、TCP_UDP
  • 目标类型:推荐IP类型(适用于ECS/Fargate容器场景)

4.2 NLB + EIP固定IP

NLB的一大优势是每个AZ分配一个弹性IP,适合需要固定IP的场景(如银行回调、第三方API白名单):


// 创建NLB
aws elbv2 create-load-balancer \
  --name my-nlb \
  --type network \
  --subnets subnet-aaa subnet-bbb

// 查看分配的EIP
aws elbv2 describe-load-balancers \
  --load-balancer-arns arn:aws:elasticloadbalancing:...:loadbalancer/net/my-nlb/xxx \
  --query 'LoadBalancers[0].AvailabilityMappings'

4.3 NLB + TLS终止

NLB支持TLS终止,将HTTPS解密后的TCP流量转发到后端:


// 创建TLS监听器(443端口)
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:...:loadbalancer/net/my-nlb/xxx \
  --protocol TLS \
  --port 443 \
  --certificates CertificateArn=arn:aws:acm:...:certificate/xxx \
  --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 \
  --default-actions Type=forward,TargetGroupArn=arn:aws:...:targetgroup/my-tg/xxx

五、健康检查配置:自动故障转移的关键

健康检查是负载均衡器的核心机制——检测后端实例是否健康,自动摘除故障节点。

5.1 健康检查参数详解

参数推荐值说明
协议HTTP(ALB)/ TCP(NLB)ALB可检查HTTP状态码
路径/health 或 /返回200即健康
端口traffic-port 或自定义一般用默认流量端口
间隔30秒默认值,高可用场景可调到15秒
超时5秒实例在5秒内未响应视为不健康
成功阈值2-3次连续N次健康才标记为可用
失败阈值2次连续N次不健康才摘除
成功码200默认值

5.2 CLI配置健康检查


// 修改Target Group健康检查
aws elbv2 modify-target-group \
  --target-group-arn arn:aws:...:targetgroup/my-tg/xxx \
  --health-check-path /health \
  --health-check-interval-seconds 15 \
  --health-check-timeout-seconds 5 \
  --healthy-threshold-count 2 \
  --unhealthy-threshold-count 2 \
  --matcher HttpCode=200

5.3 健康检查常见坑

坑1:健康检查路径返回非200状态码 如果你的 /health 端点在数据库断连时返回503,ELB会持续摘除实例。确保健康检查端点只检查应用本身是否运行,不检查依赖服务。

坑2:超时时间太短导致误摘 如果应用启动或处理请求偶尔超过5秒,会频繁被标记不健康。调大超时或增大失败阈值。

坑3:忘记修改安全组 ELB健康检查的源IP是网段级别的(10.0.0.0/8等),安全组需要允许ELB健康检查流量通过。

六、SSL/TLS证书部署:免费HTTPS

6.1 使用ACM免费证书

AWS Certificate Manager(ACM)提供免费SSL证书,且自动续期:


// 申请证书
aws acm request-certificate \
  --domain-name "*.example.com" \
  --subject-alternative-names "example.com" \
  --validation-method DNS

// 验证后,关联到ALB监听器
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:...:loadbalancer/app/my-alb/xxx \
  --protocol HTTPS \
  --port 443 \
  --certificates CertificateArn=arn:aws:acm:...:certificate/xxx \
  --ssl-policy ELBSecurityPolicy-TLS13-1-2-2021-06 \
  --default-actions Type=forward,TargetGroupArn=arn:aws:...:targetgroup/my-tg/xxx

// HTTP重定向到HTTPS
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:...:loadbalancer/app/my-alb/xxx \
  --protocol HTTP \
  --port 80 \
  --default-actions Type=redirect,RedirectConfig='{"Protocol":"HTTPS","Port":"443","StatusCode":"HTTP_301"}'

6.2 SSL策略选择

AWS提供多种SSL策略,推荐使用TLS 1.3:

SSL策略支持TLS版本推荐度
ELBSecurityPolicy-TLS13-1-2-2021-06TLS 1.3 + 1.2⭐⭐⭐⭐⭐ 最新最安全
ELBSecurityPolicy-TLS13-1-2-Res-2021-06TLS 1.3 + 1.2(严格)⭐⭐⭐⭐ 高安全要求
ELBSecurityPolicy-2016-08TLS 1.2 + 1.1 + 1.0⭐⭐ 兼容老客户端
ELBSecurityPolicy-FS-2016-08仅前向保密⭐⭐⭐ 中等安全

七、Cross-Zone Load Balancing:跨可用区均衡

7.1 什么是跨可用区均衡

默认情况下,NLB将流量均衡到同一AZ内的目标。跨可用区均衡会将流量分发到所有AZ的所有目标。

模式ALBNLB
默认行为✅ 自动跨AZ❌ 仅同AZ
可配置N/A可开启
费用影响无额外费用每个跨AZ数据传输$0.01/GB

7.2 何时开启/关闭

  • ALB:始终跨AZ,无需配置
  • NLB:如果各AZ实例数相同,关闭跨AZ可避免额外费用;如果实例数不均,开启跨AZ能避免单AZ过载

// 查看NLB跨AZ状态
aws elbv2 describe-load-balancer-attributes \
  --load-balancer-arn arn:aws:...:loadbalancer/net/my-nlb/xxx

// 开启/关闭
aws elbv2 modify-load-balancer-attributes \
  --load-balancer-arn arn:aws:...:loadbalancer/net/my-nlb/xxx \
  --attributes Key=load_balancing.cross_zone.enabled,Value=true

八、ELB与其他AWS服务的集成

集成服务用途典型场景
Auto Scaling实例数随流量自动增减配合ALB,高峰期自动扩容
ACM免费SSL证书HTTPS监听器
Route 53DNS将域名指向ELB域名解析到负载均衡器
CloudWatch监控ELB指标5XX错误率、请求延迟告警
WAFWeb应用防火墙ALB关联WAF规则
Global Accelerator全球加速NLB获得Anycast IP,全球低延迟
ECS/EKS容器服务Target Group支持IP目标类型

8.1 Auto Scaling + ALB联动


// 创建Auto Scaling Group关联Target Group
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-template LaunchTemplateName=my-lt \
  --min-size 2 \
  --max-size 10 \
  --target-group-arns arn:aws:...:targetgroup/my-tg/xxx \
  --vpc-zone-identifier "subnet-aaa,subnet-bbb"

// 配置目标追踪伸缩策略(基于ALB请求计数)
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg \
  --policy-name alb-request-count \
  --policy-type TargetTrackingScaling \
  --target-tracking-configuration '{
    "PredefinedMetricSpecification": {
      "PredefinedMetricType": "ALBRequestCountPerTarget",
      "ResourceLabel": "app/my-alb/xxx/targetgroup/my-tg/xxx"
    },
    "TargetValue": 1000.0
  }'

九、ELB监控与故障排查

9.1 关键CloudWatch指标

指标含义告警阈值建议
HealthyHostCount健康目标数< 预期数的50%
UnHealthyHostCount不健康目标数> 0 持续5分钟
HTTPCode_Target_5XX_Count后端5XX错误数> 总请求的1%
TargetResponseTime后端响应时间> 2秒
ActiveConnectionCount活跃连接数根据基线设定
RequestCount总请求数监控异常飙升

9.2 常见错误排查

502 Bad Gateway:后端实例崩溃或健康检查失败,确认后端服务运行中且端口正确。

504 Gateway Timeout:后端响应超过ELB超时时间(默认60秒),增大ELB超时或优化后端响应。

连接超时:安全组未放行ELB到后端的流量,检查安全组规则。

十、ELB最佳实践与省钱技巧

技巧说明
用ACM免费证书别买第三方证书,ACM完全免费且自动续期
HTTP重定向HTTPS用ELB 301重定向,不用后端处理
合理设置健康检查间隔不是越快越好,30秒够用,过快会增加费用
NLB关闭跨AZ均衡如果各AZ实例数相同,关闭可省$0.01/GB
用ALB路径路由合并服务一个ALB分发多个微服务,比每个服务一个ALB省16美元/月
监控LCU利用率ALB的LCU利用率低于50%说明选型偏大
用Global Accelerator替代NLB需要全球Anycast IP时,GA+NLB比纯NLB更优

⚠️ 文中价格为 2026 年参考价,实际费用随区域和官方调价变动,请以 AWS 官网为准。

🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。

常见问题(FAQ)

ALB和NLB可以同时使用吗?

可以。常见架构是ALB做HTTP/HTTPS入口(路径路由),NLB做TCP入口(如数据库连接、WebSocket),两者独立运行在同一VPC内。

一个ELB最多连接多少后端实例?

ALB默认最多注册500个目标,NLB默认最多300个目标。可通过Target Group属性调大(ALB最大1000,NLB最大5000)。

ELB会改变客户端IP吗?

ALB会,原始IP通过 X-Forwarded-For 头传递。NLB默认保留原始IP(源地址透传)。

ELB有免费套餐吗?

没有。ELB按小时+流量收费,无免费额度。但ACM证书和CloudWatch基础监控是免费的。

如何将现有Nginx反向代理迁移到ELB?

步骤:(1) 创建Target Group并注册所有后端实例;(2) 创建ALB,配置与Nginx相同的路由规则;(3) 将域名DNS指向ALB DNS名称;(4) 验证流量正常后下线Nginx。

NLB的固定IP会变吗?

正常情况下不会变。但如果你删除NLB再重建,EIP会重新分配。建议将EIP与NLB关联而非手动管理。

📖 延伸阅读:AWS EC2选购教程 | AWS VPC网络实战 | AWS ECS Fargate容器实战

本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多