2012-04-20 16 views
3

私たちのプロジェクトは、node.jsへのTCPパケットロードバランスを行う必要があります。Node.jsロードバランスのNginxまたはLVS?

提案がある:(nginxのかLVS)+ keepalivedの+ノードクラスタ

enter image description here

質問:

  1. TCPサーバーへの高いクライアントの同時接続は、長寿命であることが必要。 NginxやLVSのどちらがより適していますか?
  2. マスターサーバーのノードマスターに異なる優先順位を割り当てる必要があります(ローカルサーバーの優先順位はリモートサーバーよりも高くなります)。どちらがこれを行うことができますか、NginxかLVSですか?
  3. CPU使用率が低く、スループットが高いNginxまたはLVSはどれですか?
  4. NginxとLVSのパフォーマンスベンチマーク/機能比較のための推奨ドキュメントはありますか?

最後に、我々の提案が妥当かどうか疑問に思う。選択する他のより良い提案やコンポーネントはありますか?

答えて

3

静的資産をサーバーするためにnginxは必要ないと仮定しています。そうしないと、LVSはオプションになりません。

1)nginxはサードパーティ製のモジュールを介してTCPのみをサポートしていますhttps://github.com/yaoweibin/nginx_tcp_proxy_moduleウェブサーバーが必要ない場合は、LVSがより適していると言えますが、#d回答の最後にコメントがあります。

2)LVSは優先順位をサポートしていますが、nginxは優先順位をサポートしていません。

3)おそらくLVS:nginxはユーザランド、LVSカーネルです。

4)Lies、Damned Lies、Benchmarks。あなたはあなたの装備にあなたの負荷をシミュレートし、ノードクライアントスクリプトを書いて、セットアップをポンドしなければなりません。

我々はまだ生産にhttps://github.com/LearnBoost/upまでに前から後ろにすべてのノードを未行くのを見ているが、我々は次のような理由で、このルートを追求している:我々はまた、優先順位の要件を持っている、しかし、彼らはカスタムされている)

1動的に変化する。実行時に優先度を調整しており、ノードをプログラムするには1時間もかかりませんでした。

2)私たちは多くのコードアップデートを導入しており、既存のクライアントを中断することなくこれを行うことができます。既存の接続がすべて消えたら、新しい接続を処理するために新しいプロセスをスピンアップし、古いものを停止させることができます。

3)表示したいメトリックをすべて赤いサーバーにプッシュするので、すべてを見ることができます。

私はそれがプロセス/サーバーごとに最も性能の高いものではないと確信していますが、それほど多くのプログラム制御を行う利点があり、スケールアウトには冗長性の利点があります。最後のビットのパフォーマンスのスタックから。

多くのコードをコピーして貼り付けることができるかどうかを確認しましたが、すぐにコードをコーディングしています。一般消費には適していないものがたくさんあります。

関連する問題