负载均衡是高可用性基础架构的关键组件,通常用在多个服务器之间分配工作负载来提高网站、应用程序、数据库和其他服务的性能和可靠性。
没有负载均衡的Web基础结构可能如下所示:
上图示例中,用户直接连接到web服务器yourdomain.com。如果此单个Web服务器出现故障,用户将无法再访问该网站。此外,如果多个用户尝试同时访问服务器并且无法处理负载,则可能会遇到加载时间缓慢或根本无法连接的情况。
通过在后端引入负载均衡器和及一个额外的Web服务器,可以减轻这种单点故障。一般情况下,所有后端服务器都将提供相同的内容,用户无论哪个服务器响应都会收到一致的内容。
在上面说明的示例中,用户访问负载均衡器,负载均衡器将用户的请求转发到后端服务器,后端服务器直接响应用户的请求。上图中App 02服务器故障,负载均衡自动将流量分配的到App 01服务器,这就是负载均衡,在我们讨论负载均衡之前,让我们探讨负载均衡器的工作原理。
负载均衡器主要为四种类型的流量创建转发规则:
X-Forwarded-For
、X-Forwarded-Proto
以及X-Forwarded-Port
,提供请求的后端信息。这些转发规则将定义负载均衡器本身的协议和端口,并将它们映射到负载均衡器将用于将流量路由到后端的协议和端口。
负载均衡器判断两个因素选择将请求转发到哪个服务器。首先他们将确保他们可以选择的任何服务器实际上对请求做出适当的响应,然后使用预先配置的规则从中进行选择。
负载均衡器应仅将流量转发到“健康”的后端服务器。要监视后端服务器的运行状况,负载均衡服务器会定期发送心跳包到后端服务器,确保其正常运行。如果服务器未通过运行状况检查,则会自动将其从负载均衡中删除,并且在服务器恢复正常之前,不会将流量转发到这台服务器。
使用的负载均衡算法用来决定后端中哪些健康服务器将会被选择。一些常用的算法是:
Round Robin - 按顺序选择服务器。负载均衡器将在其列表中为第一个请求选择第一个服务器,然后按顺序向下进行负载,循环进行。
最少连接 -最少连接意味着负载均衡器将选择连接最少的服务器。
Source -使用Source算法,负载均衡器将根据请求的一系列源IP(例如访问者的IP地址)中选择要使用的服务器。此方法可确保特定用户始终连接到同一服务器。
管理员可用的算法取决于所使用的特定负载均衡技术。
某些应用程序要求用户继续连接到同一后端服务器。Source算法根据客户端IP信息创建关联。在Web应用程序级别实现此目的的另一种方法是通过粘性会话,其中负载均衡器设置cookie,并且来自该会话的所有请求都定向到同一物理服务器。
要将负载均衡器作为单点故障移除,可以将第二个负载均衡器连接到第一个负载均衡器以形成一个集群,其中每个负载均衡器发送心跳包监控其他负载均衡器的运行状况。每个同等地能够进行故障检测和恢复。
如果主负载均衡器发生故障,DNS必须将用户带到第二个负载均衡器。但是DNS会花费大量时间进行修复,因此管理员使用允许灵活IP地址重新映射的系统,例如腾讯云弹性网卡。按需绑定网卡,消除了DNS更改中固有的传播和缓存问题。域名可以保持与相同的IP地址关联,而IP地址本身也可以在服务器之间移动。
这就是使用腾讯云弹性网卡的高可用性基础架构图:
在本文中,我们概述了负载均衡器概念及其工作原理。想查看更多负载均衡相关的内容,您可以看看:
在开发者实验室里您还能免费使用 CLB 的相关资源,完成特定的任务。下面将介绍应用型 CLB 入门,如果您想了解传统型 CLB 入门请 点击此处。
参考文献:《What is Load Balancing?》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。