アップストリーム リストにいくつかのマシンの IP を持つロード バランサとして機能するパッセンジャーなしで nginx のみがインストールされたマシンがあります。すべてのアプリ マシンには、メイン アプリケーションを提供する Phusion パッセンジャーを備えた nginx があります。現在、アプリケーションマシンには中型のものと大型のものがあります。私の知る限り、デフォルトの nginx 負荷分散方式はラウンド ロビンです。負荷は大規模マシンと中規模マシンに均等に分散されるため、トラフィックが多い場合は中規模マシンが過負荷になり、トラフィックが少ない場合は大規模マシンのリソースが浪費されます。現在、newrelic を使用してこれらのマシンの CPU とメモリを監視し、スクリプトを使用して newrelic からデータを取得しています。このデータを使用してロード バランサーのトラフィック ルートを決定する方法はありますか。
私が知っている1つの方法は、アップストリームのマシンを監視してマークを付け、アップストリームを良いマシンに置き換え、完全に再起動せずに毎回nginx.confをリロードすることです。私の2番目の質問は、正しい方法です。言い換えれば、それには欠点がありますか、それとも問題を引き起こしますか?
3 番目の一般的な質問ですが、この負荷分散の問題に取り組むより良い方法はありますか?
1223 次
1 に答える
1
負荷をより公平に分散する別の負荷分散アルゴリズムを使用できます: http://nginx.org/r/least_connまたは/および重みを構成します。
無意味な数値ではなく、より高速なリクエスト処理が目標である場合、現在の CPU/メモリ使用量に基づいて決定を下すことはお勧めできません。
于 2012-11-27T18:41:36.657 に答える