何时使用应用程序负载平衡器和网络负载平衡器

时间:2020-04-20 13:47:46

标签: aws-load-balancer aws-application-load-balancer

我是AWS的新手。 我开始学习ALB和NLB。我知道ALB在第7层协议中工作,而NLB在第4层协议中工作。

有人可以解释ALB和NLB的实时示例吗?何时使用ALB和NLB?

即使所有Web应用程序都将使用TCP协议在服务器和客户端之间建立连接。

那么ALB是否使用TCP(第4层)协议?
那么它们之间有什么不同?谁能简要解释一下??

2 个答案:

答案 0 :(得分:1)

TL; DR 要负载均衡HTTP请求,请使用ALB。对于TCP / UDP负载平衡,请使用NLB。

ALB(应用程序负载平衡器)可以理解HTTP。如果您需要进行基于HTTP的路由(例如,根据请求路径路由到其他目标),则需要使用ALB。

ALB的独特功能包括:

  • 基于HTTP路径的路由
  • 基于HTTP标头的路由
  • 重定向
  • Lambda充当目标

NLB(网络负载平衡器)在传输级别(TCP / UDP)上运行。 NLB比ALB具有更高的性能,因为它们不需要解析HTTP消息。

NLB也支持某些独特功能:

  • 静态IP
  • 弹性IP地址
  • 保留源IP

您可以在Elastic load balancing features page上看到功能的完整比较。

答案 1 :(得分:1)

总结:一个NLB只知道TCP,而一个ALB知道有关请求的所有信息。

NLB 只能基于IP地址和其他TCP程序包信息来路由请求。

ALB 可以通过查看请求的内容来路由请求:它使用的是哪种协议(HTTP,HTTPS)?它尝试查询什么路径(/api/v1/api/v2)? content-type要求什么?

因此,如果您希望将v1 API端点的请求路由到一个EC2实例的自动伸缩组,并将v2 API端点的请求路由到另一个实例组,那么最好的选择是ALB,因为它允许您配置使所需的路由成为可能的规则。

另一方面,如果只希望将来自德国的客户端路由到一个自动伸缩组,将来自美国的客户端路由到另一个组,则NLB应该足够,因为您可以设置与那些IP地址匹配的规则国家。