ALB 和 ELB 的核心区别在于ELB 是一个总称,而 ALB 是 ELB 服务中的一种具体类型。
简单来说:
ELB:亚马逊网络服务的弹性负载均衡器。这是 AWS 提供的负载均衡服务的品牌总称,它旗下包含三种主要产品。
ALB:应用负载均衡器。它是 ELB “家族”中的一员,专为 HTTP/HTTPS 流量设计,工作在 OSI 模型的第七层。
为了更清晰,我们详细对比一下:
核心关系:ELB 的三种类型
AWS 的 Elastic Load Balancing 服务主要提供三种负载均衡器:
Application Load Balancer -应用负载均衡器
Network Load Balancer -网络负载均衡器
Classic Load Balancer -传统负载均衡器
所以,ALB 是 ELB 的一种。
ALB 与 其他 ELB 类型(主要是 NLB)的详细对比
下表清晰地展示了 ALB 与另一种常用类型 NLB 的区别:
特性 | 应用负载均衡器 | 网络负载均衡器 |
|---|---|---|
最佳适用场景 | 基于 HTTP/HTTPS 的现代Web应用、微服务、容器(如ECS/EKS)。需要基于内容的路由。 | 需要极高性能和低延迟的TCP/UDP流量,如游戏服务器、金融交易系统、IoT数据流。 |
OSI 模型层级 | 第7层 | 第4层 |
路由决策依据 | 基于HTTP头部信息(如主机名、路径、查询字符串、请求头)。 | 基于IP协议数据(如源/目标IP地址、端口号)。不查看HTTP内容。 |
性能与延迟 | 延迟略高(因为要解析HTTP头部),但足以满足绝大多数Web应用。 | 极致性能、超低延迟(微秒级)。每个NLB能处理每秒数百万个请求。 |
目标类型 | 主要面向目标组,组内可以是ECS任务、Lambda函数、EC2实例、IP地址等。 | 主要面向目标组,组内可以是EC2实例、IP地址。 |
客户端源IP | 默认情况下,后端服务器看到的是ALB的私有IP。客户端IP保存在 | 可以向后端服务器透传客户端的源IP地址(保留源IP)。 |
SSL/TLS 处理 | 可以在ALB上终止SSL,减轻后端服务器压力。支持SNI,可挂载多个证书。 | 同样支持SSL终止,也支持TCP透传(后端服务器自己处理SSL)。 |
费用模型 | 主要按使用的负载均衡器容量单元和处理的数据量计费。 | 主要按使用的网络负载均衡器容量单元和处理的数据量计费。通常LCU费用比ALB略高,但其吞吐量极大。 |
典型用例 | - 微服务API网关 | - 处理TCP游戏服务器流量 |
总结与选型建议
如果你的应用是标准的 Web 应用(HTTP/HTTPS),需要基于 URL 路径、主机名进行灵活的路由,或者要集成 AWS Lambda,选择 ALB。这是目前最常用、功能最丰富的 HTTP 负载均衡器。
如果你需要处理四层 TCP/UDP 流量,对性能和延迟有极端要求,或者需要保留客户端源 IP,选择 NLB。
Classic Load Balancer 是旧版产品,除非有历史遗留原因需要兼容,否则 AWS 推荐使用 ALB 或 NLB。
一句话记住:当有人问“ALB 和 ELB 的区别”时,本质上是在问“ALB(七层负载均衡器)和 ELB 服务下其他类型(特别是 NLB,四层负载均衡器)的区别”。