ハードウェアロードバランサーの背後には、単一のWebサイトにサービスを提供する多数のLinuxWebサーバーがあります。
訪問者がファイルをアップロードできるようにする必要が生じています。ファイルのサイズは通常300〜700 KBで、約100万個になると予想されます。ただし、これには明らかな問題があります。ユーザーがリクエストを処理するサーバーにファイルをアップロードした場合、すべてのサーバーの同期を維持するにはどうすればよいでしょうか。
遅延は最小限である必要があるため、設定されたスケジュールでrsyncのようなものを使用することは実際にはオプションではありません。また、単一障害点があってはならないため、フェイルオーバーNFSサーバーを作成するためにDRBDと組み合わせない限り、NFSは適していません。
共有/クラスター化されたファイルシステム(GlusterFS、MogileFS、OCFS2、GFS)を調べましたが、これらの経験がないため、パフォーマンスと信頼性の観点から、実稼働環境でどのように機能するかわかりません。
この問題をどのように解決するのが最善かについてのアドバイスを歓迎します。
どうもありがとう
DRBDを介したGFS2/OCFS2を使用すると、サーバーのペアでデュアルプライマリをクラスター化されたストレージとして実行できます。 Webフロントエンドは、その共有ペアからプルします。複数のヘッドがいずれかを使用して単一のFC接続メディアを共有することも、NFSを使用して各Webフロントエンドで使用される単一の共有ファイルシステムを持つこともできます。 DRBDでNFSを使用する場合は、クラスターロックがないため、プライマリ/セカンダリモードでのみ実行できることに注意してください。これにより、潜在的なスループットが半分に削減される可能性があります。
GlusterFSはあなたが探しているもののように聞こえます。いくつかの固有の癖があります。つまり、まだファイルがないノードでファイルが要求され、メタデータルックアップでファイルが存在することが示され、レプリケートされたノードの1つから転送されてから提供されます。ノードで最初に要求されたときは、ファイルサイズに応じて多少の遅れがあります。
OpenAFSも別の可能性です。ストレージを共有しました。各ローカルリソースには、最近使用したアイテムのローカルプールがあります。ストレージエンジンがダウンしても、ローカルリソースプールは引き続き機能します。
HadoopのHDFSは、「機能する」もう1つの代替手段です。セットアップは少し複雑ですが、要件も満たします。分散ファイルシステムを使用すると、重複するコンテンツが多数発生します。
もう1つの汚い方法は、静的/アップロードされたコンテンツを単一のマシンからプルするキャッシュを各Webフロントエンドで実行し、各フロントエンドでVarnishを使用して、単一コピーのRAMキャッシュバージョンを維持することです。単一のマシンに障害が発生した場合、Varnishは猶予期間まで既存のアイテムをキャッシュし、新しいアイテムは失われます。
これの多くは、必要なバックエンドの信頼性に基づいています。ローカルマシンが複製ノードである分散ファイルシステムは、データを取得するためのネットワーク操作を必要としないため、おそらくエッジオンスピードになりますが、gigEおよび10Gカードが安価であるため、大幅な遅延は発生しない可能性があります。 。
すべてのクラスター化されたファイルシステムには、1つの中心的な弱点があります。特定の割合のシステムがオフラインになると、ファイルシステム全体が役に立たなくなりますが、まだ稼働しているノードはそれを適切に処理できない可能性があります。
たとえば、ラックに30台のサーバーがあり、それらのローカルスペースを共有したいとします。クラスタファイルシステムを構築し、1つのノードだけがダウンした場合でも、問題が発生しないようにデータが他の十分なノードに複製されるように構築します。ここまでは順調ですね。次に、イーサネットスイッチのカードが停止します。このスイッチは、クラスター内のすべてのノードを相互接続します。カードは、30ノードのうち15ノードへの通信を遮断します。自分自身に尋ねる必要のある質問は次のとおりです。
いくつかの手順と、ネットワークケーブルや電源ケーブルを含むany主要コンポーネントの障害時にシステムが何をするかを考えてください。
これで、クラスター化されたファイルシステムと、これまで知らなかった数百万の新しい専門用語の準備が整いました。
NetAppボックスのNFSまたはFCLUNのOCFS2ボリュームのいずれかを使用しています。これらが最適なオプションかどうかはわかりませんが、何年にもわたって機能してきました。確かに、どちらも完全に適切に機能しますが、私は実際にはストレージ担当者であるため、個人的にはFCLUNオプションよりもOCFS2オプションを好みます。それは、あなたがすでに持っていて快適な共有ストレージインフラストラクチャにかかっていると思います。