典型的 http(s) 负载均衡器如何工作?

Ehs*_*hmi 5 load-balancing high-load load-balance http-server

我知道在某些情况下,我们会在服务器上遇到繁重的 http(s) 负载,我们应该使用负载均衡器在多个后端服务器之间分配负载。
但我在这里有一个困惑!假设有太多用户(比如 100,000)试图同时访问example.com:80负载均衡器(例如 Apachemod_proxy_balancer 或任何其他独立的负载均衡器)想要在多个后端服务器之间分配此负载,但所有流量仍然必须通过前端服务器传递,这会给该服务器带来大量流量,即使所有请求在后端服务器解析,前端服务器仍然必须管理它们(假设在最好的情况下它必须为每个请求创建一个唯一的线程,这会导致该服务器在创建 100,000 个线程后立即崩溃!)。
现在我的问题(这对专家来说可能听起来很有趣!)是负载均衡器如何处理这种情况?换句话说,前端服务器如何能够直接在客户端和后端服务器之间建立链接,而不必承受如此重的网络负载?(我知道在这种情况下我们不能将后端服务器称为真正的“后端”!但假设现在可以)这种情况是否需要任何特定于应用程序的更改?(例如,为了简单地将带有 httpLocation标头的客户端重定向到其他服务器)

Esa*_*nen 9

这取决于负载平衡器的目的,即它应该平衡什么类型的工作负载。基于反向代理的 HTTP(S) 负载平衡器在生成内容的应用程序后端之间分配负载。

反向代理并不试图平衡网络负载,与动态应用程序所做的所有任务相比,传递网络流量(并可能提供静态内容)是一项相对简单的任务。

例如,数据库访问也可以进行负载平衡。大多数数据库查询只涉及从数据库读取,因此虽然需要在所有数据库服务器之间立即复制写入,但读取可以均匀分布。

网络负载平衡是一个不同的领域。例如,在集群服务器之间平衡(网络)负载的一种常用方法是循环 DNS 记录,其中相同的主机名仅具有多个A记录。

  • 智能负载均衡器始终可以为同一客户端选择相同的后端。在许多其他设计中。这只是一个快速概览。:) (2认同)