web-dev-qa-db-ja.com

ロードバランサーとしてのhaproxyとウェブサーバーとしてのnginx?

編集:高可用性、パフォーマンスサーバーのセットアップに興味があります。

Haproxy vs. nginx vs. Apacheなどに関する記事をたくさん読みましたが、これが私の結論でした。

  1. haproxyはnginxよりも優れたロードバランサーです
  2. nginxはApacheよりも優れたWebサーバーです

だから私の質問は、どちらの設定が良いかということです。

  1. ロードバランサーとしてhaproxyを使用し、Webサーバーとしてnginxを使用していますか?
  2. ロードバランサーとWebサーバーの両方としてnginxを使用していますか?
  3. Apacheでhaproxyを使用していますか?

私のセットアップは、次のものがインストールされた2つの別々のサーバーになります:ロードバランサー、Webサーバー、PHP、読み取り用のMySQL

MySQL書き込み専用の1つの別個のサーバーは、読み取り用に2つのスレーブMySQLに複製されます。

どう思いますか?

5
feketegy

HaproxyとNginxは同じ獣ではありません:haproxyはネットワークのみを扱い、ファイルシステムには決して触れません。静的コンテンツを提供することはありません。一方、NginxやApacheなどの本格的なHTTPサーバーよりも1桁高いパフォーマンスを発揮します。

Haproxyは洗練されたロードバランサーでもあるため、ある程度使用する必要があります。

私の場合、単一のサーバーまたは簡単なセットアップで最大10,000のnginxまたはApacheを同時に使用します。これは、それ自体でうまく機能するためです。より複雑なアーキテクチャ(多くのサーバー、高スループット)の場合、Haproxyのような専用のロードバランサーが望ましいです。

Nginx対Apacheは私見の論点です。適切なサーバー(たとえば、4コアと4G RAM)で両方を10,000の同時クライアントに拡張できます。Nginxがリソースで少し軽い場合、ほとんどの場合、アプリ(Rails、Django、PHP)から違いはありません。 、何でも)はCPU +メモリ負荷の90%です。

私は言うでしょう:あなたが最も快適なウェブサーバーを使用してください。 OTOH Apacheレシピの本当のグーグルはでたらめでいっぱいであり、(大きくて非常に良い)ドキュメントを注意深く読む必要があります。アパッチ恐竜として、私はそれに非常に満足しています。しかし、HTTP Webサーバーを初めて使用する場合、Nginxはそれほど威圧的ではなく、よりクールだと思います。 ApacheとNginxはどちらも非常に信頼性があります。

PHPに関しては、私はワーカーMPMとFastCGIでApacheを使用しています。シンプルで効率的。私はずっと前に http://forge.bearstech.com/trac/wiki/DebianLamp でそれを文書化しました:Debian 6.0ではさらに簡単ですが、私はそれを文書化していません。

あなたのセットアップは私には問題ないようです(Haproxy + ApacheまたはNginx、次にPHP FastCGI経由)。ロードバランサーを個別のノード(SPOFになる)ではなく、すべてのフロントサーバーに配置することをお勧めします)。すべてのノードが同じセットアップを実行するため、より簡単です。IPフェイルオーバーを追加すれば完了です。

7
zerodeux