如果我们有负载均衡器来引导请求,为什么还需要 Web 服务器?

Why do we need web servers if we have load balancer to direct the requests?

假设我们有两台服务器通过负载均衡器处理请求。是否有必要在我们的两台服务器中都有 Web 服务器来处理请求。负载均衡器本身可以充当 Web 服务器吗?假设我们使用的是 apache 网络服务器和 HAProxy。那么这是否意味着网络服务器(Apache)应该安装在任何一台服务器的服务器和负载平衡器中。为什么我们不能在接收请求并相互通信以处理请求的两台服务器机器上都安装负载均衡器。

负载均衡器位于您的网络服务器前面,可根据会话数量、源 IP 和目标 IP 的哈希值、请求的 URL 或其他条件重定向请求。此外,它将检查后端服务器的可用性,以确保即使一台服务器出现故障,请求也能得到响应。

并非每个网络服务器都安装了它 - 您只需要一个实例。它可以是一个硬件设备,也可以是一个软件(如 HAproxy),可以安装也可以不安装在其中一个网络服务器上。尽管这样做并不谨慎,因为此网络服务器可能会出现故障,然后代理将无法将流量重定向到其余服务器。

这有几种不同的情况。一种是对服务相同 HTML 内容的 2 个网络服务器的负载平衡请求,以提供冗余。

另一种方法是仅使用一个 public 地址来提供多个网站,即根据请求的 URL 应用目标 NAT。为此,软件必须确定 HTML 请求中的 URL 并将流量重定向到为该站点提供服务的后端网络服务器。这有时被称为 'reverse proxy',因为它向外部隐藏了内部服务器地址。

在最基本的情况下,您希望让 Web 服务器完成对静态内容的请求,而应用程序服务器处理业务逻辑,即处理对动态内容的请求。

但是 Web 服务器还可以做许多其他事情,例如验证和验证请求、记录指标。此外,Web 服务器的重要部分是将从应用程序服务器获取的内容与客户端的视图一起表示。

如果您有不止一台服务器,您希望 LB 位于 Web 和 App 服务器的前面。此外,没有什么能阻止您将 Web 和 App 服务器合二为一。