什么是负载均衡?

来自菜鸟教程
(重定向自什么是负载均衡?
跳转至:导航、​搜索

介绍

负载平衡是高可用性基础架构的关键组件,通常用于通过将工作负载分布在多个服务器上来提高网站、应用程序、数据库和其他服务的性能和可靠性。

没有负载平衡的 Web 基础架构可能如下所示:

在此示例中,用户直接连接到位于 yourdomain.com 的 Web 服务器。 如果这台 Web 服务器出现故障,用户将无法再访问该网站。 此外,如果许多用户尝试同时访问服务器并且服务器无法处理负载,他们可能会遇到加载时间缓慢或根本无法连接的情况。

这种单点故障可以通过在后端引入负载平衡器和至少一个额外的 Web 服务器来缓解。 通常,所有后端服务器都将提供相同的内容,以便用户接收到一致的内容,而不管哪个服务器响应。

在上面的示例中,用户访问负载均衡器,后者将用户的请求转发到后端服务器,然后后端服务器直接响应用户的请求。 在这种情况下,单点故障现在是负载均衡器本身。 这可以通过引入第二个负载均衡器来缓解,但在我们讨论之前,让我们探索一下负载均衡器是如何工作的。

负载均衡器可以处理什么样的流量?

负载均衡器管理员为四种主要类型的流量创建转发规则:

  • HTTP — 标准 HTTP 平衡基于标准 HTTP 机制引导请求。 负载均衡器设置 X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-Port 标头以向后端提供有关原始请求的信息。
  • HTTPS — HTTPS 平衡功能与 HTTP 平衡相同,但增加了加密。 加密以两种方式之一处理:使用 SSL passthrough 一直保持加密到后端或使用 SSL 终止 将解密负担放在负载均衡器上,但发送未加密到后端的流量。
  • TCP — 对于不使用 HTTP 或 HTTPS 的应用程序,也可以平衡 TCP 流量。 例如,到数据库集群的流量可以分布在所有服务器上。
  • UDP — 最近,一些负载均衡器增加了对使用 UDP 的 DNS 和 syslogd 等核心互联网协议的负载均衡支持。

这些转发规则将定义负载均衡器本身的协议和端口,并将它们映射到负载均衡器将用于将流量路由到后端的协议和端口。

负载均衡器如何选择后端服务器?

负载均衡器根据两个因素的组合选择将请求转发到哪个服务器。 他们将首先确保他们可以选择的任何服务器实际上对请求做出适当的响应,然后使用预先配置的规则从该健康池中进行选择。

健康检查

负载均衡器应该只将流量转发到“健康”的后端服务器。 为了监控后端服务器的运行状况,运行状况检查会定期尝试使用转发规则定义的协议和端口连接到后端服务器,以确保服务器正在侦听。 如果服务器未能通过健康检查,因此无法为请求提供服务,则会自动将其从池中移除,并且在再次响应健康检查之前不会将流量转发给它。

负载平衡算法

使用的负载平衡算法确定将选择后端的哪些健康服务器。 一些常用的算法是:

Round Robin — Round Robin 意味着服务器将被顺序选择。 负载均衡器将为第一个请求选择其列表中的第一台服务器,然后按顺序向下移动列表,到达末尾时从顶部开始。

Least Connections - Least Connections 意味着负载均衡器将选择连接最少的服务器,并且在流量导致会话较长时推荐使用。

Source — 使用 Source 算法,负载均衡器将根据请求的源 IP 的哈希值(例如访问者的 IP 地址)选择要使用的服务器。 此方法可确保特定用户始终连接到同一台服务器。

管理员可用的算法因使用的特定负载平衡技术而异。

负载均衡器如何处理状态?

某些应用程序要求用户继续连接到同一后端服务器。 源算法基于客户端 IP 信息创建亲和性。 在 Web 应用程序级别实现此目的的另一种方法是通过 粘性会话 ,其中负载平衡器设置一个 cookie,并且来自该会话的所有请求都被定向到同一物理服务器。

冗余负载均衡器

要将负载均衡器作为单点故障移除,可以将第二个负载均衡器连接到第一个以形成集群,其中每个负载均衡器监控其他负载均衡器的运行状况。 每一个都具有同样的故障检测和恢复能力。

如果主负载均衡器发生故障,DNS 必须将用户带到第二个负载均衡器。 由于 DNS 更改可能需要相当长的时间才能在 Internet 上传播并自动进行故障转移,因此许多管理员将使用允许灵活 IP 地址重新映射的系统,例如 浮动 IP 。 按需 IP 地址重新映射通过提供可在需要时轻松重新映射的静态 IP 地址,消除了 DNS 更改中固有的传播和缓存问题。 域名可以保持与相同的 IP 地址相关联,而 IP 地址本身在服务器之间移动。

这就是使用浮动 IP 的高可用性基础架构的外观:

结论

在本文中,我们概述了负载均衡器的概念以及它们的一般工作方式。 要了解有关特定负载平衡技术的更多信息,您可能希望查看:

DigitalOcean 的负载均衡服务

HAProxy

Nginx