负载均衡器背后的算法是什么?

4

我需要学习负载均衡器,如网络负载平衡、Linux虚拟服务器、HAProxy等。有一些底层知识我需要了解:

  • 这些负载均衡器使用了哪些算法/技术?哪种最流行?最有效?

我希望这些算法/技术不会太复杂。是否有一些关于它们的资源可以参考?


我知道这是一个非常老的帖子,但万一你仍在处理这个问题,你可能能够帮助我。我目前正在实施一些负载均衡策略,并将它们用于OpenStack云上。你愿意和我分享一些想法吗? - Kunbi
4个回答

3

例如,Apache 中的负载均衡由名为 mod_proxy_balancer 的模块处理。该模块支持 3 种负载均衡算法:

  • 请求计数
  • 加权流量计数
  • 挂起请求计数

有关更多详细信息,请查看此处:mod_proxy_balancer


2

不确定这是否属于服务器故障,但一些负载均衡技术包括:

  • 轮询
  • 最小连接数

我使用了最小连接数。将请求发送到负载最少的服务器上似乎是最明智的选择。


1
我想了解算法,所以在这里问了一下 ^^ - Quan Mai
1
+1,最少连接并带有合理TTL缓存的保持活动也是我使用的。除非涉及50个或更多节点,否则我从未见过轮询不会以“收藏夹”结束。 - Tim Post
@Vimvq1987 - 确实,但由于通常情况下系统管理员比程序员更了解硬件。如果您想知道这些算法是如何编写的,那我就不知道了哈。 - Jack Marchetti
我需要学习关于基于软件的负载均衡器,然后我想在我的论文中描述这些算法。我认为这里的程序员们会对它们有很好的了解 :)。 - Quan Mai

2
一般来说,负载均衡是将新的客户端请求发送到最不繁忙的服务器。根据运行的应用程序,为每个服务器分配一个“繁忙因子”:基本上是反映负载均衡算法中一个或多个感兴趣点的数字(已连接的客户端、CPU/内存使用情况等),然后在运行时选择具有最低得分的服务器。基本上任何负载均衡技术都是基于这样的原理:
1. 轮询并没有实现“繁忙得分”,但是将每个连续请求分配给循环队列中的下一个服务器。
2. 最少连接数的得分=服务器打开的连接数。显然,连接较少的服务器是更好的选择。
3. 随机分配是一种特殊情况——您对服务器的负载做出了不知情的决定,但假设该函数具有统计上均匀的分布。

1

你能给我一个链接证明这个方法真的被使用了吗? :D - Quan Mai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接