什么是负载平衡?| 负载平衡器如何运作

负载平衡是在多个服务器之间分配流量以提高服务或应用程序的性能和可靠性的过程。

学习目标

阅读本文后,您将能够:

  • 定义负载平衡
  • 说明负载平衡算法的两个主要类别
  • 了解重要的负载平衡概念,如服务器监控和故障转移

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

使用 Cloudflare Pro 和我们的速度工具插件提升网站性能

什么是负载均衡?

负载平衡图像

负载平衡是在两台或更多的计算机之间分配计算工作负荷的做法。在互联网上,负载平衡经常被用来在几个服务器之间分配网络流量。这能够减少每台服务器的压力,使服务器更有效率,加快性能,减少延迟。负载平衡对于大多数互联网应用的正常运行是必不可少的。

没有负载平衡 - 服务器变得过载,服务缓慢 有了负载平衡 - 工作负载平均分配

想象一下,一家杂货店的结账队伍有 8 条结账线,其中只有一条是开放的。所有的顾客都必须排在同一条线上,因此顾客要花很长时间才能为他们的物品买单。现在想象一下,商店开放全部 8 条结账线。在这种情况下,顾客的等待时间大约缩短了 8 倍(取决于每个顾客购买多少物品等因素)。

负载平衡本质上是完成了同样的事情。通过在多个服务器之间分配用户请求,大大减少了用户等待时间。这会带来更好的用户体验——上述示例中的杂货店客户如果总是等待很长时间,他们可能会寻找效率更高的杂货店。

负载平衡如何运作?

负载平衡由称为负载平衡器的工具或应用程序处理。负载平衡器可以是基于硬件的,也可以是基于软件的。硬件负载平衡器需要安装专用的负载平衡设备;基于软件的负载平衡器可以在服务器、虚拟机中运行。内容交付网络 (CDN) 通常包括负载平衡功能。

当来自用户的请求到达时,负载平衡器将请求分配到给定的服务器,并对于每个请求重复此过程。负载平衡器根据多种不同的算法确定应由哪个服务器处理每个请求。这些算法分为两大类:静态和动态。

静态负载平衡算法

静态负载平衡算法在分配工作负载时不考虑系统的当前状态。静态负载平衡器不会知道哪些服务器运行缓慢以及哪些服务器没有被充分使用。相反,它根据预先确定的计划分配工作负载。静态负载平衡可以快速设置,但会导致效率低下。

回到上面的类比,想象一下如果杂货店开放了 8 条结账线,有一名员工的工作是引导顾客排队。想象一下,这个员工只是按顺序指引,将第一个客户分配到第 1 列,将第二个客户分配到第 2 列,依此类推,而没有回头查看这些队伍的移动速度。如果 8 位收银员都高效工作,那么这个系统就可以正常工作——但如果一个或多个收银员落后,一些队伍可能会变得比其他队伍长得多,从而导致糟糕的客户体验。静态负载平衡也存在同样的风险:有时,个别服务器仍会变得不堪重负。

循环 DNS 和客户端随机负载平衡是静态负载平衡的两种常见形式。

动态负载平衡算法

动态负载平衡算法会考虑每台服务器的当前可用性、工作负载和运行状况。他们可以将流量从负担过重或性能不佳的服务器转移到未充分利用的服务器,从而保持分配的均匀和高效。但是,动态负载平衡更难配置。影响服务器可用性的因素有很多:每台服务器的运行状况和整体容量、正在分配的任务的大小等等。

假设杂货店员工将顾客分类到收银台时使用了一种更动态的方法:员工仔细观察队伍,看看哪个队伍走得最快,观察每个顾客购买了多少物品,并相应地分配顾客。这可以确保为所有客户提供更高效的体验,但也会给指引排队的员工带来更大的压力。

有几种类型的动态负载平衡算法,包括最少连接、加权最少连接、基于资源和基于地理位置的负载平衡。

负载平衡用于何处?

如上所述,负载平衡通常用于 Web 应用程序。基于软件和基于云的负载平衡器有助于在托管应用程序的服务器之间平均分配互联网流量。一些云负载平衡产品可以在全球分布的服务器之间平衡互联网流量负载,这一过程称为全局服务器负载平衡 (GSLB)

负载平衡也常用于大型本地化网络,例如数据中心或大型办公大楼内的网络。传统上,这需要使用硬件设备,例如应用程序交付控制器 (ADC) 或专用负载平衡设备。基于软件的负载平衡器也用于此目的。

什么是服务器监控?

动态负载平衡器必须了解服务器的运行状况:它们的当前状态、它们的性能等。动态负载平衡器通过执行定期的服务器运行状况检查来监控服务器。如果一个服务器或一组服务器运行缓慢,负载平衡器分配给它的流量就会减少。如果一个服务器或一组服务器完全发生故障,负载平衡器会将流量重新路由到另一组服务器,这一过程称为“故障转移”。

什么是故障转移?

当给定服务器无法运行并且负载平衡器将其正常进程分配到辅助服务器或服务器组时,就会发生故障转移。服务器故障转移对于可靠性至关重要:如果没有适当的备份,服务器崩溃可能会导致网站或应用程序瘫痪。快速进行故障转移以避免服务中断非常重要。

了解更多关于负载平衡的不同方面: