在 AWS 中,为什么 NLB 可以提供静态 IP 地址而 ALB 不能?

In AWS, why is that an NLB can provide static IP addresses whereas an ALB cannot?

根据 AWS,

Network Load Balancer routes traffic to targets within Amazon Virtual Private Cloud (Amazon VPC) and is capable of handling millions of requests per second while maintaining ultra-low latencies

此外,NLB 支持静态/弹性 IP 地址。我的印象是 AWS 通常不推荐 IP 地址,而是要求客户使用 DNS 名称,以便底层硬件可以扩展(并且 IP 地址可以更改)。在 NLB 的情况下,IP 可以保持静态并且仍然可以扩展,但 ALB 上没有提供相同的功能,这怎么可能呢? - AWS 在 NLB 中改进是 ALB 的设计限制吗?或者在 ALB 的情况下保留静态 IP 的任何技术挑战?

不知道这是否是 AWS 在 ALB 和 NLB 中使用 IP 地址背后的完整解释,但我认为这是因为 ALB 工作在应用程序层(第 7 层)OSI model.

在第 7 层,除了 HTTP、HTTPS,FTP 你还有 DNS。因此,您使用 DNS 作为与 ALB 通信的主要方式,这就是 AWS 告诉您要做的。

NLB 工作在 OSI 模型的传输层(第 4 层)。这里没有 DNS,例如 TCP 或 UDP。因此,当您想要与 NLB 通信时,您需要使用 IP 地址,因为技术上没有 DNS 和 URL。

AWS 为 NLB 提供 DNS 的事实仅适用于使用 NLB 并在第 7 层上运行的应用程序,例如当您使用 NLB 来负载平衡 HTTPS/HTTP 流量时,或通过 NLB ssh 到实例时.但是 NLB 可以用于只在第 4 层运行的应用程序,或者使用 custom/proprietary 更高级别的协议,因此它们必须使用 IP 地址,因为 DNS 在第 4 层不可用。所以显然 NLB 的 IP 地址必须是静态,否则此类应用程序将中断。