2012-11-27 270 views
1

我有一臺機器只安裝了nginx,沒有乘客,充當負載平衡器,其上游列表中有一些機器的ips。所有的應用程序機器都有nginx和phusion乘客服務於主應用程序。現在一些應用機器是中型的,而另一些則是大型的。據我所知,默認的nginx負載均衡方案是循環法。由於負載是平均分配到大中型機器上的,如果流量很大,中型機器會超負荷運轉,而大型機器資源浪費的時間就會減少。現在我使用newrelic來監視這些機器上的cpu和內存以及一個從newrelic獲取數據的腳本,所以有什麼方法可以使用這些數據來決定負載均衡器上的流量路由。

我知道的一種方法是監視和標記上游機器的好壞,然後用好的機器替換上游機器並每次重新加載nginx.conf而不重新啓動。所以我的第二個問題是,方式是正確的。換句話說它是否有任何缺點,或者是否會導致任何問題?

第三個也是更普遍的問題是否有更好的方法來解決這個負載平衡問題?使用nginx負載均衡

回答

1

您可以使用另一種負載均衡算法來分配負載:http://nginx.org/r/least_conn或/和配置weights

如果您的目標是更快的請求處理而不是毫無意義的數字,那麼根據當前的cpu /內存使用情況做出決定並不是一個好主意