AWS应用程序负载平衡器与networking负载平衡器

我想了解ALB(应用程序负载平衡器)和NLB(networking负载平衡器)之间的主要区别是什么。 我知道ALB在OSI模型的第7层 – 这意味着它存在于应用程序级 – 而NLB在第4层,这意味着它在传输级别上工作。

这就是说,这意味着ALB只能处理HTTP / HTTPS请求,而不像处理任何types的TCP请求的NLB。

所以我的问题是…是所有? 还是还有其他的区别?

networking负载均衡是基于networkingvariables(如IP地址和目标端口)的stream量分配。 它是第4层(TCP)及其以下版本,不适用于在应用程序层考虑任何内容,例如内容types,cookie数据,自定义标题,用户位置或应用程序行为。 它是上下文无关的,只关心包含在它所指向的数据包内的networking层信息。

应用程序负载平衡是基于从networking层到应用程序层的多个variables的请求分布。 它是上下文感知的,并且可以根据任何单个variables轻松地引导请求,因为它可以组合variables。 应用程序根据其特有的行为进行负载平衡,而不仅仅是服务器(操作系统或虚拟化层)信息。

两者之间的差异很重要,因为networking负载平衡无法保证应用程序的可用性。 这是因为它仅根据networking和TCP层variables做出决定,根本就没有应用程序的意识。 通常,networking负载均衡器将根据服务器响应ICMP ping的能力或正确完成三向TCP握手的能力来确定“可用性”。 应用程序负载平衡器进一步深入,并且能够基于特定页面的成功的HTTP GET来确定可用性,并且还能够基于input参数validation内容是否如预期的那样被validation。

当考虑在同一个共享IP地址的主机上部署多个应用程序(旧的skool中的虚拟主机)时,这一点也很重要。 networking负载平衡器在检查可用性时不会区分应用程序A和应用程序B(实际上,除非端口不同),但是应用程序负载平衡器将通过检查可用的应用程序层数据来区分这两个应用程序。 这种差异意味着networking负载平衡器可能最终将请求发送到已经崩溃或脱机的应用程序,但应用程序负载平衡器不会犯同样的错误。

参考:

networking负载平衡与应用程序负载平衡