web-dev-qa-db-ja.com

負荷分散Drupalサーバー:サーバー間でデータを共有するための良い方法?

負荷分散されたWebサーバーのセットアップを作成する方法の概要を把握しようとしています。実際のロードバランサーをセットアップし、2つ以上のWebサーバーを追加することは十分に公平なようです。ただし、ファイルの最適な設定を決定することはできません。

WebサーバーはCMSシステム(この場合はDrupal)を実行します。コンテンツに関連するユーザーによってアップロードされたファイルがある可能性があり、これはすべてのWebサーバーからアクセスできる必要があります。今、私は単に指定されたファイルサーバーを持ち、各Webサーバーにファイルディレクトリをマウントして、さまざまなWebサーバーがこれらの「共有」ファイルにアクセスできるようにすることを考えていました。

ただし、4〜5台のサーバーについて話している場合、このソリューションはボトルネックになりますか?マウントはSSH経由で行われると思います。

すべてが高く評価されています!

更新(2013年1月15日)

私はCsync2とLsyncdの組み合わせで行くことにしました。次に、ミラーとして機能する2つのサーバーをセットアップします。 Lsyncdは、特定のディレクトリ(およびそのサブディレクトリ)の変更をリッスンし、他のサーバーへのファイルの同期を処理するCsync2を呼び出します。詳細を知りたい場合は、 このチュートリアル をご覧ください。

6
sbrattla

CDNに移動する前は、約20台のサーバーからなるWebファームがありました。約3年前にLinuxカーネルにバグが発生し、ボリュームがマウントされないという問題が発生し、正しくフェイルオーバーしなくなるまで、NFSを使い始めました。

次に、ディレクトリを5分ごとに各イメージサーバーに同期するrsyncスクリプトを作成しました。これは理想的ではありませんでしたが、機能し、問題はありませんでした。

次のステップは、inotifyを使用してディレクトリを監視するlsyncdに切り替えました。ファイルが変更されると、そのファイルを同期するプロセスが生成されます。デフォルトでは、それはrsyncです。その解決策は確かであり、CDNの経済性がなければ、私はそれを続けていただろう。

Lsyncd: http://code.google.com/p/lsyncd/

お役に立てば幸いです。

7
Sean Milheim

John and Cailin の5つのステップ Drupalのスケーリングに関するチュートリアル は非常に役立ちます。

最初の2つのステップは次のとおりです。

ステップ1: Webサーバーをデータベースサーバーから分離します。

ステップ2: 冗長Webサーバーと負荷分散を設定します。

結論:最初に垂直方向にスケーリングする(現在同じサーバー上にある関数を異なる層に分離する)ことなく、水平方向にスケーリングする(同じ機能を持つ複数のサーバーを追加する)必要はありません。

9
Skyhawk

Glusterfs( http://www.gluster.org/ )を使用して、負荷分散されたWebサーバー間でファイルを共有しました。また、サーバー間でglusterfsを使用してMySQLデータベースファイルを共有しようとしましたが、成功しませんでした。最初の投稿者が示唆しているように、データベースサーバーからWebを分離することをお勧めします。

サーバー間でファイルを共有する他のソリューションは光沢( http://wiki.lustre.org/index.php/Main_Page )であり、ロードバランサーの設定によっては、lsyncd(- http://code.google.com/p/lsyncd/ )サーバー間でファイルを同期します。

4
ciupinet

高可用性NFS共有を設定し、それをすべてのhttpサーバーにマウントして、ファイルを提供できます。

高可用性MySQLクラスターのチュートリアルを見つけてください: http://www.howtoforge.com/loadbalanced_mysql_cluster_debian

0
Dragos