web-dev-qa-db-ja.com

HAproxy +ワニス+ nginxセットアップの提案が必要

現在、HAProxyを実行している2つのロードバランサーがあります。これらはバックエンドにリクエストを転送し、それぞれがnginxの前でVarnishキャッシュを実行します。これでほとんどの帯域幅がバックエンドサーバーに分散されると思いましたが、私のロードバランサーは月に数百ギガの帯域幅を使用しているようです。これはバックエンドが使用する帯域幅に近いものです。トラフィックはすべてロードバランサーを経由するので、それは理にかなっていると思いますか?

私のロードバランサーとバックエンドは、米国のさまざまな地域にあります。フロントエンドでHAProxyとVarnishを実行し、バックエンドでnginxのみを実行した場合、より効率的になりますか?ありがとう!

5
Lin

最初の質問へ:はい、通常のHAProxy構成では、すべてのトラフィックは、サーバーに着信するときと、サーバーに到達するときの両方でロードバランサーを通過します。サーバーからクライアントに再度送信します。これは、HTTPプロキシまたはIPレベルNAT /ルーティングボックスとして一般的に実装されているため、すべてのロードバランサーでほぼ常にそうです。例外は「ダイレクトサーバーリターン」(DSR)の場合です。が使用されます。 DSRとは何かについてのこのinlab.comの説明 を参照してください。

私のロードバランサーとバックエンドは、米国のさまざまな地域にあります

ええ、なぜ?ジオロードバランシングまたはマルチキャストルーティングを使用している場合、これらの質問をすることはないと思います。通常の使用例では、サーバーを同じラックに配置し、高速で衝突のない、低遅延のLANを使用する必要があります。それはあなたのサーバーソフトウェアの生活を楽にし、あなたのサーバーからより多くのパフォーマンスを与え、そしてより一貫した/信頼できるパフォーマンス特性を与えます...

使用しているソフトウェアの標準的なセットアップは次のようになります。

nginx(HTTP圧縮用)-> Varnishキャッシュ(キャッシング用)-> HTTPレベルロードバランサー(HAProxy、nginx、またはVarnishビルトイン)-> Webサーバー。

オプションで、負荷が高い場合は、最前面に複数のnginxサーバーまたはニスサーバーを配置できます。しかし、それは毎秒数千のリクエストがあるサイトの場合です。

2番目の質問へ「より効率的」と尋ねるとき、私はあなたが何を意味するのか疑問に思っています。サーバー間のトラフィックが少ない場合のように効率的ですか?わずかに、Varnishキャッシュは、一部のトラフィックがそれ以上戻るのを阻止するためです。 CPUの使用に関してより効率的です。論理構造を同じに保つ限り、負荷の少ない物理サーバーにサービスをシャッフルすることができます。

8
Jesper M

あなたはそれを後方に持っています...ロードバランサーの前にワニスを置いて、彼らが早い段階でできるだけ多くの要求に答えることができるようにします(1つのワニスが処理するにはトラフィックが多すぎる場合は、それらをロードバランシングします低オーバーヘッドTCP ldirectordのようなロードバランサー)次に、VarnishをHAProxyインスタンスに戻し、そこから移動します。Varnishを使用するbehind HAProxiesは、私-あなたはできるだけ早く多くのトラフィックを流したいです。

12
womble