什么是负载平衡?

介绍

负载平衡是高度可用基础设施的一个关键组成部分,通常用于通过在多个服务器上分配工作负载来提高网站、应用程序、数据库和其他服务的性能和可靠性。

没有负载平衡的 Web 基础设施可能看起来如下:

web_server

在本示例中,用户将直接连接到 Web 服务器,在 yourdomain.com. 如果该单个 Web 服务器停机,用户将不再能够访问网站. 此外,如果多个用户试图同时访问服务器,并且无法处理负载,他们可能会经历慢的加载时间或根本无法连接。

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

Diagram 01: Load Balancers / Top-to-bottom

在上面描述的例子中,用户访问负载平衡器,将用户的请求转发到后端服务器,然后直接响应用户的请求。

负荷平衡器可以处理什么样的流量?

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

  • HTTP - 标准 HTTP 平衡是基于标准 HTTP 机制的请求。 负载平衡器设置了X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-Port头,以便为后端提供有关原始请求的信息
  • HTTPS - HTTPS 平衡功能与 HTTP 平衡相同,加上加密。 加密是以两种方式进行的:无论是用 SSL passthrough来保持加密,直到后端,还是用 SSL 终止来将加密负载放置到负载平衡器上,但将未加密的流量发送到后端 TCP -

这些转发规则将定义负载平衡器本身的协议和端口,并将其绘制到负载平衡器将使用的协议和端口来将流量路由到后端。

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

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

健康检查

负载平衡器只能将流量转发到健康的后端服务器上。为了监测后端服务器的健康状况,健康检查会定期尝试使用转发规则定义的协议和端口连接到后端服务器,以确保服务器正在收听。

负荷平衡算法

使用的负载平衡算法决定后端的哪个健康服务器将被选择。

Round Robin - Round Robin意味着服务器将被序列选择。负载平衡器将为第一个请求选择其列表中的第一个服务器,然后将列表按顺序移动,从顶部开始,当它到达终点时。

最少连接 - 最少连接意味着负载平衡器将选择具有最少连接的服务器,并建议当流量导致更长的会话时。

- 使用源算法,负载平衡器将根据请求的源IP的哈希,例如访问者的IP地址,选择使用哪个服务器。

管理员可用的算法取决于使用的特定负载平衡技术。

负荷平衡器如何处理状态?

一些应用程序要求用户继续连接到相同的后端服务器。源算法创建了一个基于客户端IP信息的亲密性。在Web应用程序层面实现这一点的另一种方法是通过 粘贴会话,其中负载平衡器设置了一个cookie,并将该会话的所有请求发送到相同的物理服务器。

负荷平衡器

要将负荷平衡器作为一个单一的故障点移除,可以将第二个负荷平衡器连接到前者,形成一个集群,其中每一个都监测对方的健康状况。

Diagram 02: Cluster / Distributed

如果主负载平衡器失败,DNS 必须将用户带到第二个负载平衡器。由于DNS 更改可能需要相当长的时间才能在互联网上传播,并使此故障转移自动化,许多管理员将使用允许灵活的 IP 地址重复的系统,如 保留 IP。 在需求中,IP 地址重复消除了 DNS 更改中固有的传播和缓存问题,通过提供一个可在需要时轻松重复的静态 IP 地址。

这就是使用保留IP的高度可用基础设施的样子:

Diagram 03: Reserved IPs

结论

在本文中,我们概述了负荷平衡器的概念以及它们的总体运作方式. 要了解更多关于特定负荷平衡技术的信息,您可能想看看:

DigitalOcean的负载平衡服务

福克斯

Nginx 的

Published At
Categories with 技术
comments powered by Disqus