使用nginx进行负载均衡

时间:2012-11-27 15:36:08

标签: nginx load-balancing

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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