介绍
负载平衡是通常用于通过在多个服务器上分布工作负载来提高网站,应用程序,数据库和其他服务的性能和可靠性的高可用性基础架构的关键组件。
没有负载平衡的Web基础设施可能如下所示:
在此示例中,用户直接连接到web服务器,位于yourdomain.com 。 如果此单个Web服务器出现故障,用户将无法再访问该网站。 此外,如果许多用户尝试同时访问服务器,并且无法处理负载,则它们可能会遇到较慢的加载时间或可能根本无法连接。
可以通过在后端引入负载平衡器和至少一个附加Web服务器来减轻这一单点故障。 通常,所有后端服务器将提供相同的内容,以便用户接收一致的内容,而不管哪个服务器做出响应。
在上面示出的示例中,用户访问负载平衡器,负载平衡器将用户的请求转发到后端服务器,后端服务器然后直接响应用户的请求。 在这种情况下,单点故障现在是负载均衡器本身。 这可以通过引入第二个负载均衡器来减轻,但在我们讨论之前,让我们探讨负载均衡器如何工作。
什么样的流量可以负载平衡器处理?
负载平衡器管理员为四种主要类型的流量创建转发规则:
- HTTP - 标准HTTP平衡根据标准HTTP机制定向请求。 负载平衡器设置
X-Forwarded-For
,X-Forwarded-Proto
和X-Forwarded-Port
头,以向后端提供有关原始请求的信息。 - HTTPS - HTTPS平衡功能与HTTP平衡功能相同,添加了加密。 加密是通过两种方式之一处理的:使用SSL直通 ,它一直保持到后端的加密 ,或者使用SSL终止 ,这将解密负载置于负载平衡器上,但将未加密的流量发送到后端。
- TCP - 对于不使用HTTP或HTTPS的应用程序,TCP流量也可以进行平衡。 例如,到数据库集群的流量可以分布在所有服务器上。
- UDP - 最近,一些负载平衡器增加了对负载平衡核心互联网协议(如使用UDP的DNS和syslogd)的支持。
这些转发规则将定义负载均衡器本身上的协议和端口,并将它们映射到负载均衡器将使用的协议和端口将流量路由到后端。
负载均衡器如何选择后端服务器?
负载平衡器基于两个因素的组合来选择将请求转发到哪个服务器。 他们将首先确保他们可以选择的任何服务器实际上正确地响应请求,然后使用预配置的规则从健康池中进行选择。
健康检查
负载平衡器应仅将流量转发到“健康”后端服务器。 要监视后端服务器的运行状况,运行状况检查会定期尝试使用转发规则定义的协议和端口连接到后端服务器,以确保服务器正在监听。 如果服务器未通过运行状况检查,因此无法处理请求,则会自动从池中删除,并且在重新响应运行状况检查之前,流量将不会转发给它。
负载平衡算法
使用的负载平衡算法确定将选择后端上哪些健康的服务器。 一些常用的算法是:
Round Robin - Round Robin表示服务器将被顺序选择。 负载平衡器将在其列表中为第一个请求选择第一个服务器,然后按顺序向下移动列表,当到达结束时从顶部开始。
最小连接 - 最小连接意味着负载均衡器将选择具有最少连接的服务器,并且在流量导致较长会话时建议使用。
源 - 使用源算法,负载平衡器将基于请求的源IP的哈希值(例如访问者的IP地址)选择要使用的服务器。 此方法确保特定用户将始终连接到同一服务器。
管理员可用的算法根据使用的具体负载均衡技术而有所不同。
负载均衡器如何处理状态?
某些应用程序要求用户继续连接到同一后端服务器。 源算法基于客户端IP信息创建亲和性。 在Web应用程序级别实现这一点的另一种方法是通过粘性会话 ,其中负载平衡器设置cookie,并且来自该会话的所有请求都被定向到同一物理服务器。
冗余负载平衡器
为了将负载均衡器作为单点故障排除,可以将第二个负载均衡器连接到第一个负载均衡器以形成集群,其中每个负载均衡器监视其他人的运行状况。 每个人都能同样能够进行故障检测和恢复。
在主负载平衡器发生故障的情况下,DNS必须使用户到达第二个负载平衡器。 由于DNS更改可能需要大量时间才能在Internet上传播,并使此故障转移自动进行,因此许多管理员将使用允许灵活IP地址重映射(如浮动IP)的系统 。 按需IP地址重映射通过提供静态IP地址,可以在需要时轻松重新映射,从而消除DNS变更中固有的传播和缓存问题。 域名可以保持与相同的IP地址关联,而IP地址本身在服务器之间移动。
这是使用浮动IP的高可用性基础架构的外观:
结论
在本文中,我们概述了负载均衡器概念及其工作原理。 要了解有关特定负载平衡技术的更多信息,您可能需要查看:
DigitalOcean的负载均衡服务
- 如何创建您的第一个DigitalOcean负载平衡器
- 如何在DigitalOcean负载平衡器上配置SSL通道
- 如何在DigitalOcean负载平衡器上配置SSL终止
- 如何平衡TCP流量与DigitalOcean负载平衡器