【问题标题】:When to use Application Load Balancer and Network Load Balancer何时使用 Application Load Balancer 和 Network Load Balancer
【发布时间】:2020-08-03 01:10:22
【问题描述】:
我是 AWS 新手。
我开始学习 ALB 和 NLB。我知道 ALB 在第 7 层协议中工作,而 NLB 在第 4 层协议中工作。
谁能解释一下ALB和NLB的实时例子?何时使用 ALB 和 NLB??
尽管所有 Web 应用程序都将使用 TCP 协议在服务器和客户端之间建立连接。
那么 ALB 是否使用 TCP(第 4 层)协议??
那么它们之间有什么不同呢?谁能简单解释一下???
【问题讨论】:
标签:
aws-load-balancer
aws-application-load-balancer
【解决方案1】:
总结:NLB 只知道 TCP,而 ALB 知道请求的一切。
NLB 只能根据 IP 地址和其他 TCP 包信息路由请求。
ALB 可以通过查看请求的内容来路由请求:它使用什么协议(HTTP、HTTPS)?它试图查询什么路径(/api/v1,/api/v2)?它在请求什么content-type?
因此,如果您希望将 v1 API 端点的请求路由到自动缩放的 EC2 实例组,并将 v2 API 端点的请求路由到另一组实例,那么您的最佳选择是 ALB,因为它允许您配置规则,使您想要的路由成为可能。
另一方面,如果您只想将来自德国的客户端路由到一个自动扩缩组,而将来自美国的客户端路由到另一个组,则 NLB 就足够了,因为您可以设置与这些客户端的 IP 地址匹配的规则国家。
【解决方案2】:
TL;DR 要对 HTTP 请求进行负载平衡,请使用 ALB。对于 TCP/UDP 负载平衡,请使用 NLB。
ALB (Application Load Balancer) 理解 HTTP。如果您需要进行基于 HTTP 的路由(例如,根据请求路径路由到不同的目标),您需要使用 ALB。
ALB 的独特功能包括:
- HTTP 基于路径的路由
- 基于 HTTP 标头的路由
- 重定向
- Lambda 函数作为目标
NLB(网络负载平衡器)在传输级别 (TCP/UDP) 运行。 NLB 比 ALB 性能更高,因为它们不需要解析 HTTP 消息。
NLB 也支持一些独特的功能:
您可以在Elastic load balancing features page 上查看功能的完整比较。