强制服务器更改平均负载

强制服务器更改平均负载

最近,我们与 Limestone Networks 合作建立了一个服务器,作为我们网络集群中的工作服务器。

集群背后的主要基础设施(数据库和负载均衡器)位于亚利桑那州菲尼克斯的 Phoenix NAP,而新服务器位于德克萨斯州达拉斯。

在调整路由之后,我们能够将盒子之间的延迟减少到 28 毫秒,但问题是,这个延迟仍然太高,无法在负载平衡器、达拉斯的工作人员和数据库之间获得任何可接受的页面加载时间。

我们的负载均衡器基于提供数据的服务器的平均负载。虽然我们仍然希望 Limestone 中的服务器作为冗余备份运行,但允许不需要在其上提供服务和从其获取服务会降低速度。因此,我们希望强制将其平均负载设为 10,这样负载平衡系统仅在其他工作进程宕机或工作进程负载过高导致页面加载速度进一步降低时才允许其提供页面。

我已经对此进行了研究,我能想到的最好的办法是创建一个单独的负载平均文件(因为 Linux 实际上只是文件)并从那里提取数据,但是,我们无法这样做,因为我们正在使用现成的负载平衡器(Litespeed)。

答案1

“伪造”平均负载完全忽略(事实上,公然违反)最小惊讶原则平均负载是一个重要的指标,它应该绝不是谎言。

实现您所要求的唯一可行方法是破解自定义内核,将静态值(或 sysctl 可调值)添加到实际负载平均值。
这不是一个非常复杂的破解方法,但您必须在内核中乱搞,这一事实应该告诉您,这可能不是正确的做法。


你真正想要做的(以及你通过伪造平均负载间接要求做的)是重量远程服务器,这样除非必须使用,否则不会使用它。
我不知道 Litespeed 是否可以做到这一点(他们的在线文档是可怕),但如果不能,你应该用一个可以的负载均衡器替换它(haproxy,或者真的任何不错的负载平衡软件)。
这是负载平衡器非常基本的功能。任何值得使用的负载平衡器都应该能够做到这一点。

如果您无法在 Lightspeed 中对服务器进行加权,也无法更改负载平衡解决方案,那么您的另一个选择是让远程服务器根本不响应请求,除非主服务器全部关闭。
在远程服务器上运行一个测试其他服务器的进程,并且仅在其他服务器运行缓慢时才启动您的应用程序。
这个解决方案有很多潜在的陷阱,我不会深入讨论 - 您了解您的应用程序,并且可以评估此​​选项对您的特定环境是否合理。它的主要好处是您不会在内核中乱搞。

相关内容