現在、2つのWebサーバー(CentOS 5.5)があり、自動ファイルレプリケーションを使用する両方でクライアント/サーバーとしてGlusterFSを使用しています。
両方のWebサーバーの場合:
GlusterFSマウントポイントは次のとおりです。
/mnt/glusterfs/site1
ローカルのGlusterFSブリックは
/export/sdb1/glusterfs/site1
バインドマウントを使用して、ApacheのGlusterFSマウントをポイントしています。
/var/www/site -> /mnt/glusterfs/site1
ページがレンダリングされる前に多くの小さなファイルを読み取る必要がある動的ページ(ページ自体のキャッシュがオプションではない場合)では、GlusterFSを使用した場合のパフォーマンスはローカルファイルシステムを使用した場合よりも少なくとも5倍遅くなります。つまり、ローカルのGlusterFSブリックです。
option read-subvolume
オプションを使用して、ファイルがローカルのGlusterFSブリックから読み取られるようにしていますが、メタデータがネットワーク上の他のブリックでチェックされているため、処理速度が低下していると思います。
残念ながら、Apache自体が書き込みを行うため、ApacheにローカルのGlusterFSブリックを使用させることはできません。
/mnt/glusterfs/site1
と/export/sdb1/glusterfs/site1
は事実上同じファイルシステムであるため、Apacheがローカルブリックから直接読み取り、GlusterFSマウントに書き込む方法はありますか?
これにより、パフォーマンスが大幅に向上します。
私はNFS、OCFS、GFS2、Lustre、DRBDを知っていますが、上記を実行できる場合は、これが最も簡単なソリューションになります。
おそらく、Apacheディレクティブ、Apacheモジュール(カスタムモジュールでも)、またはシステムレベルでさえ?
提案/コメント/方向性をいただければ幸いです。
直接書き込む場合、glusterfsを介して複製されることはありません。直接読むと、ドライブに障害が発生した場合に修復が正しく機能しないリスクがあります。ファイルを読み取ると、メタデータがチェックされ、ファイルがローカルに存在しない場合は、ドライブがオンラインになったときにファイルシステムを複製するのではなく、ファイルを複製します。
これらのファイルが定期的に作成されている場合、それらを非分散マウントに書き込み、それをファイルに使用できますか?
あなたはあなたがやりたいことをすることができます、しかしそれはおそらくいくつかの非常に奇妙な方法で壊れます。 1つのシナリオは、一方のノードでファイルを変更した場合、もう一方のノードはメタデータが変更されたことを認識せず、古いファイルを読み取ることです。 GlusterFSメーリングリストに立ち寄るかもしれません。非常に役立ちます。