一些负载均衡器使用 DNS 来平衡流量,以循环方式将相同的名称解析为不同的 IP,从而有效地重定向请求。这在数据中心或其他物理位置之间的负载平衡请求时通常很有用。如果您需要“即时”故障转移,那么这是一个糟糕的选择,因为您将受制于客户端 DNS 服务器来兑现您提供的 TTL。Cisco 的 GSS(全球站点选择器)是基于 DNS 的负载平衡的一个很好的例子。
其他负载平衡器通过将发往虚拟 IP 的数据包标头重写为场中服务器的真实 IP 来工作。这提供了实时负载平衡和近乎即时的故障转移。一个例子是 Cisco 的 CSM(内容交换模块)
请注意,在上述两个示例中,客户端和服务器之间都有一个 TCP 会话。
反向代理的工作方式是代表 Web 服务器接受请求,然后将该请求回显到 Web 服务器并将其返回给客户端,如果出现类似的请求,可以选择缓存结果。
您的困惑是合理的-它们通常是同一回事。但不总是。当您提到负载均衡器时,您指的是一个非常具体的东西 - 一个服务器或设备,它在两个或多个 Web 服务器之间平衡入站请求以分散负载。但是,反向代理通常具有任意数量的功能:
负载平衡:如上所述
缓存:它可以缓存来自其后面的 Web 服务器的内容,从而减少 Web 服务器上的负载并将一些静态内容返回给请求者,而无需从 Web 服务器获取数据
安全性:它可以通过防止从 Internet 直接访问来保护 Web 服务器;它可以通过简单的方式通过简单的方式来实现这一点,只需混淆 Web 服务器,或者它可能有一些更活跃的组件来实际审查入站请求以查找恶意代码
SSL加速:使用SSL时;它可以作为这些 SSL 会话的终止点,以便从 Web 服务器上卸载处理加密的工作量
我认为这涵盖了大部分内容,但可能还有一些我错过的其他功能。当然,将设备或软件作为负载平衡器/反向代理销售的情况并不少见,因为这些功能通常捆绑在一起。
此外,反向代理特定于 Web 服务器。
然而,负载均衡器可以处理许多其他协议。虽然 Web (HTTP) 是当今的大创意,但 DNS、邮件 (SMTP、IMAP) 等也可以进行负载平衡。就在现在,当大多数人想到“Internet”或“IP 网络”时,他们会想到 Web。还有更多的东西可能更模糊,或者更多的利基。
虽然最终结果(在服务器之间分配请求)在各种负载平衡器和反向代理之间是相同的,但不同之处在于用于分配请求的方法。
一些负载均衡器使用 DNS 来平衡流量,以循环方式将相同的名称解析为不同的 IP,从而有效地重定向请求。这在数据中心或其他物理位置之间的负载平衡请求时通常很有用。如果您需要“即时”故障转移,那么这是一个糟糕的选择,因为您将受制于客户端 DNS 服务器来兑现您提供的 TTL。Cisco 的 GSS(全球站点选择器)是基于 DNS 的负载平衡的一个很好的例子。
其他负载平衡器通过将发往虚拟 IP 的数据包标头重写为场中服务器的真实 IP 来工作。这提供了实时负载平衡和近乎即时的故障转移。一个例子是 Cisco 的 CSM(内容交换模块)
请注意,在上述两个示例中,客户端和服务器之间都有一个 TCP 会话。
反向代理的工作方式是代表 Web 服务器接受请求,然后将该请求回显到 Web 服务器并将其返回给客户端,如果出现类似的请求,可以选择缓存结果。
请注意,客户端实际上从未与 Web 服务器建立连接;而是严格在代理和客户端之间进行对话。
负载均衡器可以平衡从第 3 层向上到第 7 层的流量,但反向代理是特定于 HTTP 的。