如果这些服务器上的负载超过某个水平,我想停止向后端服务器提供请求。任何已经在网站上冲浪的人仍然会被路由,但新连接将被发送到静态服务器繁忙页面,直到负载下降到预定水平以下。
我可以使用 cookie 让当前客户进入,但我找不到有关如何根据自定义负载指标进行路由的信息。
谁能指出我正确的方向?
如果这些服务器上的负载超过某个水平,我想停止向后端服务器提供请求。任何已经在网站上冲浪的人仍然会被路由,但新连接将被发送到静态服务器繁忙页面,直到负载下降到预定水平以下。
我可以使用 cookie 让当前客户进入,但我找不到有关如何根据自定义负载指标进行路由的信息。
谁能指出我正确的方向?
Nginx 有一个用于负载均衡的HTTP Upstream模块。max_fails
使用和fail_timeout
选项检查后端服务器的响应能力。当没有可用的后端时路由到备用页面是使用该backup
选项完成的。我建议将您的负载指标转换为 Nginx 提供的选项。
假设当负载比您想要的高时,Nginx 仍然将后端视为“启动”。您可以通过调整后端服务器的最大连接数来进一步调整它。所以,也许后端服务器在负载太高之前只能处理 5 个连接,所以你调整它只允许 5 个连接。然后在前端,Nginx 会在尝试发送第六个连接时立即超时,并将该服务器标记为不可用。
另一种选择是在 Nginx 之外处理这个问题。像 Nagios 这样的软件不仅可以监控负载,还可以根据它所做的监控主动触发操作。
您可以从模板生成 Nginx 配置,该模板具有将每个上游节点标记为开启或关闭的选项。当监视器检测到上游负载过高时,它可以根据需要从模板中重新生成 Nginx 配置,然后重新加载 Nginx。
相同想法的轻量级版本可以使用与 Nagios 服务器在同一台机器上运行的脚本来完成,并执行简单的监控以及配置文件更新。