1

我有一台机器,只安装了 nginx,没有乘客,它充当负载均衡器,其上游列表中的某些机器的 ips。所有的应用程序机器都有 nginx 和为主要应用程序服务的 phusion 乘客。现在一些应用机器是中型的,而另一些是大型的。据我所知,默认的 nginx 负载平衡方案是轮询。由于负载在大型和中型机器之间平均分配,如果流量大,中型机器就会过载,而当流量较少时,大型机器的资源就会被浪费。现在我使用 newrelic 来监控这些机器上的 cpu 和内存,并使用脚本从 newrelic 中获取数据,那么有没有办法使用这些数据来决定负载均衡器上的流量路由。

我知道的一种方法是监视并标记上游机器好或坏,然后用好的机器替换上游并每次重新加载 nginx.conf 而不完全重启。所以我的第二个问题是正确的方式。换句话说,它有任何缺点还是会导致任何问题?

第三个也是更普遍的问题是否有更好的方法来解决这个负载平衡问题?

4

1 回答 1

1

您可以使用另一种负载均衡算法来更公平地分配负载:http: //nginx.org/r/least_conn或/和配置权重

如果您的目标是更快的请求处理而不是无意义的数字,那么根据当前的 cpu/内存使用情况做出决定并不是一个好主意

于 2012-11-27T18:41:36.657 回答