Skip to content

负载均衡

负载均衡器(LB)是任何分布式系统中至关重要的组件。它有助于将流量分散到服务器集群中,从而提高应用、网站或数据库的响应速度和可用性。在分发请求的同时,LB 还会跟踪所有资源的状态。如果某台服务器无法处理新的请求、未响应或错误率升高,LB 将停止向该服务器发送流量。

通常,负载均衡器位于客户端与服务器之间,负责接收传入的网络和应用流量,并使用不同的算法将流量分发到多个后端服务器。通过在多台服务器之间均衡应用请求,负载均衡器可以减少单个服务器的负载,避免某台应用服务器成为单点故障,从而提升整个应用的可用性和响应速度。

图19-1

为了充分利用可伸缩性和冗余,我们可以在系统的每一层进行负载均衡。可以在以下三个位置添加负载均衡器(LB):

  • 用户与 Web 服务器之间
  • Web 服务器与内部平台层(如应用服务器或缓存服务器)之间
  • 内部平台层与数据库之间

图19-2

负载均衡的优势

  • 用户可以获得更快、无中断的服务。用户无需等待某台繁忙的服务器完成先前的任务,而是可以直接将请求转发给更可用的资源。
  • 服务提供商可减少宕机时间,提高吞吐量。即使某台服务器完全故障,负载均衡器也会自动将流量转向健康的服务器,不影响终端用户体验。
  • 负载均衡使系统管理员更容易处理传入请求,同时减少用户的等待时间。
  • 智能负载均衡器可以提供预测性分析,提前识别流量瓶颈,从而为企业提供可操作的洞察。这对自动化和业务决策至关重要。
  • 系统管理员可以减少组件故障或过载情况。与单一设备承担大量工作相比,负载均衡可以让多台设备分担任务。

负载均衡算法

负载均衡器如何选择后端服务器?
在将请求转发到后端服务器之前,负载均衡器会考虑两个因素。首先,它会确保所选服务器能够正确响应请求;然后,它会使用预定义的算法从健康服务器集中选择一台服务器。

健康检查

负载均衡器应仅将流量转发到“健康”的后端服务器。为了监控服务器状态,“健康检查”会定期尝试连接后端服务器,确保其处于监听状态。如果服务器未通过健康检查,则会被自动移出服务器池,直到其恢复正常并通过健康检查后,流量才会重新分配到该服务器。

不同的负载均衡方法使用不同的算法来满足不同需求:

  • 最少连接数(Least Connection Method) —— 选择当前活动连接数最少的服务器,适用于长连接较多且分布不均的情况。
  • 最短响应时间(Least Response Time Method) —— 选择当前活动连接最少且平均响应时间最低的服务器。
  • 最少带宽(Least Bandwidth Method) —— 选择当前流量最小(以 Mbps 计算)的服务器。
  • 轮询(Round Robin Method) —— 依次循环遍历服务器列表,将每个新请求发送到下一个服务器,适用于服务器配置相同且长连接较少的场景。
  • 加权轮询(Weighted Round Robin Method) —— 适用于处理能力不同的服务器,每台服务器被分配一个权重(整数值表示处理能力),权重高的服务器会优先接收请求,并比权重低的服务器接收更多请求。
  • IP 哈希(IP Hash) —— 通过计算客户端 IP 地址的哈希值来决定请求应该被转发到哪台服务器。

冗余负载均衡器

负载均衡器本身可能成为单点故障。为了解决这个问题,可以使用一个备用的负载均衡器,与主负载均衡器组成集群。每个负载均衡器都会监控对方的健康状态,并且都具备处理流量和故障检测的能力。如果主负载均衡器发生故障,备用负载均衡器将接管流量。

图19-3

以下链接包含关于负载均衡的精彩讨论:

[1] 什么是负载均衡 - Avi Networks
[2] 系统架构入门 - Lethain
[3] 负载均衡(计算) - Wikipedia