我想知道知道每个后端服务器的 loadavg 是否会有优势,并要求 HAProxy 将下一个请求发送到 loadavg 最低的计算机。
但是,我还没有看到任何可以在 HAProxy 中提供这种功能的东西。也许它不可用?
我发现这篇文章显示了一个带有use_backend
命令的前端定义,但我认为地图将被加载一次并在 HAProxy 运行的整个持续时间内缓存。否则,通过 loadavg 动态更改对项目进行排序的地图不会有任何区别......
frontend ft_items
[...]
use_backend %[path,lower,map(/etc/haproxy/items.map,bk_default)]
我不清楚轮询对我的应用程序是否足够好,因为有些请求需要 50 毫秒(图像、CSS 等),而其他请求可能需要 2 秒(大型报告)。因此,检查计算机的 loadavg 似乎更符合此应用程序的要求。
您最好将 HAProxy 映射分解,以便对静态资源的快速请求通过一个循环映射进行,而较慢的请求通过不同的 RR 映射进行。
您可以对请求使用相同或不同的后端池,其想法是平均所有服务器处理相同数量的快速和慢速请求。或者,您可以将它们映射到不同的后端系统,并使用更强大的系统来处理报告的计算密集型工作。
亚历克西斯,
这听起来与代理检查的用途完全一样。Willy 好心地添加了我们用于 Loadbalancer.org 设备的补丁,并且我们已经开源了基于 Windows 的服务器代理。包括基本 Linux 服务器示例的说明如下:
https://www.loadbalancer.org/blog/open-source-windows-service-for-reporting-server-load-back-to-haproxy-load-balancer-feedback-agent
Windows 代理可以监控 CPU、RAM 和 TCP 连接计数的组合(即 RDP 会话)。
随时欢迎反馈。这提醒了我——如果有人实现了某种服务器响应时间算法,那就太好了,那么你就不一定需要基于服务器的代理了。