ALB、NLB 与 GLB:如何选择
了解应用程序、网络和网关负载均衡器之间的区别,并将每种类型匹配到理想的使用场景。
ALB、NLB 与 GLB:如何选择 是 CoddyKit 上的免费 AWS Solutions Architect 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Solutions Architect 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Solutions Architect 课程共包含 4 节课。
弹性负载均衡概述
弹性负载均衡(ELB)会自动将传入的应用程序流量分配到多个目标,例如 EC2 实例、容器、Lambda 函数或 IP 地址。ELB 是一项托管服务,这意味着 AWS 负责负载均衡器本身在多个 AZ 中的预置、扩展和可用性。
AWS 在 ELB 体系下提供三种负载均衡器:Application Load Balancer(ALB)、Network Load Balancer(NLB)和 Gateway Load Balancer(GWLB)。每种负载均衡器运行在 OSI 模型的不同层,并针对不同使用场景进行了优化。
Application Load Balancer(ALB)
ALB 运行在 OSI 模型的第 7 层(HTTP/HTTPS)。它可以检查 HTTP 标头、路径、查询字符串、主机名和 Cookie,并据此做出智能路由决策。对于需要基于内容进行路由的 Web 应用程序、微服务和 API 端点,ALB 是首选。
ALB 的主要功能包括:基于路径的路由(将 /api/* 路由到一个目标组,将 /static/* 路由到另一个目标组)、基于主机的路由(将不同的虚拟主机路由到不同的后端)、基于 HTTP 标头和查询字符串的路由、WebSocket 支持以及 HTTP/2 支持。ALB 可以将流量路由到 EC2 实例、容器(ECS/EKS)、Lambda 函数和 IP 地址。
# Create an ALB
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-aaaa1111 subnet-bbbb2222 \
--security-groups sg-12345678 \
--type applicationNetwork Load Balancer(NLB)
NLB 运行在第 4 层(TCP/UDP/TLS)。它根据 IP 协议数据路由数据包,而不会检查应用程序内容。NLB 专为极高性能而设计:每秒可处理数百万个请求,并提供超低延迟(通常低于 100 微秒)。
NLB 的主要功能包括:每个 AZ 提供静态 IP 地址(每个子网一个弹性 IP)、TLS 直通(不解密而直接转发加密流量)、保留客户端 IP 地址,以及支持 UDP 协议(例如 DNS、RADIUS 和游戏服务器)。NLB 无法执行基于内容的路由,也无法检查 HTTP 标头。
# Create an NLB
aws elbv2 create-load-balancer \
--name my-nlb \
--subnets subnet-aaaa1111 subnet-bbbb2222 \
--type networkGateway Load Balancer(GWLB)
GWLB 运行在第 3 层(网络层),专门用于部署、扩展和管理第三方虚拟网络设备,例如防火墙、入侵检测和防御系统(IDS/IPS)以及深度数据包检测系统。
GWLB 使用GENEVE 协议(端口 6081)封装流量,并将其发送到您的设备集群。设备检查数据包后,通过同一个 GWLB 端点将其返回。流量可以透明传输,无需更改源 VPC 中的路由。这是在 AWS VPC 流量中插入集中式安全检查的标准模式。
ALB 使用场景
在以下情况下请选择 ALB:
- 需要基于 HTTP/HTTPS 内容的路由(路径、主机、标头、查询字符串)
- 后端包含 Lambda 函数或 ECS 容器
- 需要 WebSocket 或 HTTP/2 连接
- 希望将 AWS WAF 集成到负载均衡器层,以提供 Web 应用程序安全防护
- 正在构建一个微服务架构,其中有许多服务分布在不同的 URL 路径上
- 需要在负载均衡器处执行 SSL/TLS 终止
在 SAA-C03 考试的大多数 Web 应用程序和 REST API 负载均衡问题中,ALB 都是正确答案。
NLB 使用场景
在以下情况下请选择 NLB:
- 需要极高性能(每秒数百万个请求、亚毫秒级延迟)
- 需要合作伙伴或防火墙可以加入允许列表的静态 IP 地址
- 需要处理UDP 流量(游戏、DNS、RADIUS、IoT)
- 希望在负载均衡器处不解密而使用 TLS 直通(与目标之间进行端到端加密)
- 需要在 TCP 层原生保留客户端源 IP
- 使用 AWS PrivateLink 向其他 VPC 或账户公开服务(PrivateLink 要求使用 NLB)
GWLB 使用场景和架构
在需要执行以下操作时请选择 GWLB:
- 将第三方防火墙设备(Palo Alto、Fortinet、Check Point)插入网络流量路径
- 在 VPC 层对所有入站或出站流量执行深度数据包检测
- 通过自动负载均衡水平扩展 IDS/IPS 设备集群
架构如下:流量从源 VPC → GWLB 端点 → 设备 VPC(GWLB 在此将流量分配到各个设备实例)→ 设备将流量返回 GWLB → GWLB 转发到原始目标。源和目标都不会感知中间存在的检查过程。
跨区域负载均衡
跨区域负载均衡会将流量均匀分配到所有已启用 AZ 中的全部已注册目标,而不考虑接收请求的负载均衡器节点位于哪个 AZ。如果未启用跨区域负载均衡,每个 AZ 的节点只会将流量分配到自身 AZ 中的目标。
ALB 默认启用跨区域负载均衡,且不收取额外费用。NLB 默认禁用跨区域负载均衡,启用后会产生跨 AZ 数据传输费用。GWLB 默认禁用跨区域负载均衡。当各 AZ 中的目标数量不均衡时,请启用跨区域 LB,以避免出现流量热点。
协议和功能对比
考试快速对比表:
- OSI 层:ALB = 7(HTTP),NLB = 4(TCP/UDP),GWLB = 3(IP)
- 协议:ALB = HTTP、HTTPS、WebSocket;NLB = TCP、UDP、TLS;GWLB = 通过 GENEVE 支持所有 IP 协议
- 静态 IP:ALB = 否(使用 NLB + ALB 模式);NLB = 是(每个 AZ 一个);GWLB = 不适用
- WAF 集成:ALB = 是;NLB = 否;GWLB = 否
- Lambda 目标:ALB = 是;NLB = 否;GWLB = 否
- 连接排空:三者都支持注销延迟
ALB 与 AWS WAF
ALB 原生集成 AWS WAF,可提供区域级防护(相对于 CloudFront 上的 WAF 所提供的全球边缘防护)。将 WAF Web ACL 关联到 ALB 后,您可以在请求到达应用程序之前过滤 HTTP 请求,阻止 SQL 注入、XSS、已知恶意 IP 和滥用速率的客户端。
当您希望在负载均衡器层执行安全检查时,请使用 ALB + WAF(例如保护未通过 CloudFront 提供服务的 API)。关联到 ALB 的 WAF Web ACL 必须位于与 ALB 相同的区域,并且必须使用 REGIONAL scope(不同于 CloudFront WAF,后者要求在 us-east-1 中使用 CLOUDFRONT scope)。
NLB 与 PrivateLink
AWS PrivateLink 使用 NLB 将一个 VPC 中的服务公开给其他 VPC 或 AWS 账户中的使用者,而不需要 VPC 对等连接、互联网网关或 NAT。服务提供商会在其服务前创建 NLB,并创建一个VPC 端点服务。使用者则在自己的 VPC 中创建一个指向该服务的接口 VPC 端点。
流量通过 AWS 的私有网络传输,绝不会经过互联网。PrivateLink 是 AWS 上 SaaS 提供商的标准模式,也常用于将共享服务(例如集中式安全服务)公开给多个内部 AWS 账户。
快速检查
测试您对本课 AWS 解决方案架构师(SAA-C03)相关概念的理解。
课程回顾
本课您学习了以下内容:ALB 在第 7 层(HTTP)基于内容规则进行路由,并支持 WAF 集成和 Lambda 目标;NLB 在第 4 层(TCP/UDP)进行路由,并提供静态 IP 和极高吞吐量;GWLB 使用 GENEVE 在第 3 层部署虚拟网络设备。请根据协议和功能需求选择匹配的负载均衡器。接下来我们将学习目标组和运行状况检查。
常见问题解答
「ALB、NLB 与 GLB:如何选择」课时是免费的吗?
是的 — 「ALB、NLB 与 GLB:如何选择」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Solutions Architect 课程的其余内容,请升级到 CoddyKit PRO。 AWS Solutions Architect 课程共包含 4 节课。
「ALB、NLB 与 GLB:如何选择」这节课中我会学到什么?
了解应用程序、网络和网关负载均衡器之间的区别,并将每种类型匹配到理想的使用场景。 你通过在浏览器中直接运行的动手代码来练习 AWS Solutions Architect,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Solutions Architect 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Solutions Architect 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「ALB、NLB 与 GLB:如何选择」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Solutions Architect 课中编写并运行代码吗?
能。每节 AWS Solutions Architect 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- ALB、NLB 与 GLB:如何选择
- 目标组与运行状况检查
- 监听器规则与基于路径的路由
- SSL 终止与粘性会话