来自服务器的响应是否必须经过负载均衡器或直接到达客户端?

来自服务器的响应是否必须经过负载均衡器或直接到达客户端?

我正在尝试用 C++ 构建自己的负载均衡器。但不确定客户端和服务器之间的所有数据包(请求和响应)是否都必须经过负载均衡器。

  1. 它是否应该只是帮助客户端找到服务器,然后让它们直接相互通信?
  2. 或者它应该是“全双工”,不仅请求而且响应也要经过它?

答案1

这取决于设置,在大多数情况下,所有流量都会双向通过负载均衡器,因为这是“最安全”和最简单的配置。从网络安全的角度来看,这样做也有优势,因为您可以更好地将服务器与最终用户隔离开来。

要使 TCP 会话正常工作,每个 TCP 流的源和目标 IP 地址和端口必须一致。虽然可以让多个系统对同一 IP 做出响应,但当出现问题时,您就会遇到麻烦和困难。

如果您想在关键路径中没有负载均衡器的情况下执行此操作,您可能需要在 DNS 级别而不是负载均衡器级别执行此操作。

回想遥远的过去,我记得 LVS(http://www.linuxvirtualserver.org/how.html) 有 3 种不同的负载平衡机制,值得一读。我已经很久没用过它了,但我并不认为它比 Apache 或同等的负载平衡解决方案更好。[互联网已经发展了,这份文件已经有 30 年的历史了。当时我们还没有深入研究出口过滤和安全性,而且计算机的速度要慢得多。此外,您不能使用它来剥离 https -> http,这在今天非常有用]

答案2

在 http 响应正常的情况下,所有流量(可能)都通过负载均衡器向北流动,这是合乎逻辑的,

但是,如果它是像视频这样的数据流,那么合乎逻辑的是只传递标头而其余数据直接发送到客户端。

很高兴知道它在 HAproxy 或 Nginx 中是如何发生的。 wowza 负载平衡器以较新的格式工作(具有侦听器和流量管理器)

相关内容