目前我正在运行一个 squid 服务器,使用循环机制在两个服务器之间实现负载平衡。
但运行几天后,我发现服务器 1 的速度越来越慢。有没有什么办法可以通过 CPU 性能来确定哪个服务器应该获得更多使用 squid 的用户?
谢谢
答案1
Squid 对此还不够智能。正如 Squid 文档所述:
Squid 平等对待所有循环父节点。目前还无法实现例如将 25% 的请求转发给一个父节点,将 75% 的请求转发给另一个父节点。
独立性虚拟服务器和哈普罗西有几种可用的算法,如加权循环、最少连接等。但它们没有内置机制通过真实服务器上的 CPU 负载来实现这一点。
在我管理的一个 IPVS 安装中,我们有一个 cronjob,它通过 SSH 连接到每个服务器并从 /proc/loadavg 中获取负载。根据负载,它会计算出一个合适的权重。然后使用 ipvsadm 命令调整该真实服务器的权重。效果很好,并且每个服务器的负载几乎相等。
请记住,负载并不是唯一要考虑的因素。平均响应时间可能更能准确反映用户体验。