NFSを介してnginxで静的ファイルを提供していますか?


9

nginxサーバーで毎秒約7,000のリクエストを受け取っているウェブサイトがあります。このサーバーは、Apacheサーバーへの書き換えを処理するだけでなく、静的ファイルや画像などを直接提供します。静的ファイルは、約5,000のリクエストで最も大きな部分です。

アーキテクチャのアップグレードでは、これらの静的ファイルを含むディレクトリをNFS経由でエクスポートする中央ファイルサーバーの使用について考えます。これらのファイルへの書き込みアクセス権がないため、ディレクトリはnginxマシンで読み取り専用でマウントできます。私の主な懸念は:

NFSはこれに対して十分高速ですか?NFSが処理できる要求の数に制限はありますか?この方法を実行するときに、「必須」のオプションはありますか?

おまけ:このセットアップには、NFS以外にも他の選択肢はありますか?

ありがとう!


読み取りアクセスなし、または「唯一の」読み取りアクセス?
pauska

ありがとう!読み取りアクセスのみ。書き込みアクセスは不可。
j0nes

2
1秒あたり7kのリクエストは、1日あたり約6,048,00,000リクエストです。これを単一のNGINXサーバーで実行している場合、私たち(およびサーバーのクラスターを半分の負荷で使用している企業)は設定を知りたいと思っています。
スマッジ

回答:


2

中央NFSサーバーをセットアップすることにより、設計に単一障害点を導入します。それだけでも取引ブレーカーになるはずです。そうでない場合、NFSはこのようなロードに十分な速度で動作します。重要な要素は、ファイルをキャッシュするのに十分なRAM、低レイテンシの相互接続(Gig-E以上)、およびチューニング(前のものより少ない)です。

また、rsyncまたは同様のツールを使用して、個々のWebサーバーで静的ファイルの更新のローカルコピーを保持することを強く検討する必要があります。別のオプションとして、SANまたは冗長NFSサーバーソリューションがあります(どちらもrsyncのアイデアよりもはるかに複雑でコストがかかります)。


2
NFSはSPoFである必要はありません
gWaldo

@gWaldo「中央NFSサーバー」をどのように正確に設定し、それをSPoFにしないことができますか?
クリスS

あなたが言ったように、中央の NFSサーバーはSPoFであり、代わりにNFSクラスターを実装することを選択することを実現することによってそれを行います。私は実際には....あなたと一緒に不同意ではないよ
gWaldo

おかげで-私はrsyncルートに行くと思うので、この解決策を受け入れ、単一点障害の問題を回避します(これは私の主な懸念事項です)。
j0nes

GlusterFSとCTDBを使用して高可用性デュアル複製NFSサーバーを実装するのはかなり簡単です。パフォーマンスに関しては、私のクラスターは1秒あたり約10kのリクエストを受信して​​おり、うまくクラックしています。唯一の問題は、NFSサーバーに大量のRAMが必要になることです。
Alpha01、2015

2

私は使用のcachefilesd NFSは、ローカルHDにファイルをキャッシュするために(CacheFSのと、最近のLinuxカーネルを)。このように、nfs内のすべての読み取りはファイルを/ var / cache / fs dirにコピーし、次の読み取りはそこから配信されます。カーネルは、コンテンツがまだ有効かどうかをnfsでチェックします。

この方法で、中央NFSを使用できますが、ローカルファイルのパフォーマンスを失うことはありません

Cachefilesdは、空きサイズ/ iノードが構成されたレベルに達したときに古いファイルのクリーニングを処理するため、NFSからの一般的でないデータやHDからの一般的なリクエストを処理できます

もちろん、ニスを使用して、より一般的なリクエストをキャッシュし、nginx / NFSがそれ以降提供されないようにします。

ここに小さなcachefilesdのハウツーがあります


1

速度は多くの要因に依存します:

  • サーバーはどのようにNFSターゲットに接続されますか?単一のデュアルポートSASディスクは、6 Gbpsの転送速度を利用できます。1ギガイーサネット(これから20%のTCPオーバーヘッドを差し引くことができる)を使用する場合は、このことを覚えておいてください。
  • NFSサーバーはどのような種類のキャッシュを取得しますか?キャッシュの多いエンタープライズグレードのアレイコントローラーを使用していますか?この設定では読み取りキャッシュが重要です
  • 同じファイルに同時にアクセスするサーバーはいくつありますか?NFSロックは害を及ぼす可能性がある-ひどい

NFSを介して開くことができるファイルの制限は、ホストオペレーティングシステムの制限です。FreeBSDはサポートするために、例えば、さまざまなチューニングオプションを持つ大規模なオープン・ファイルの数を、それはあなたのサーバーにRAMの量に依存します。

中央ファイルサーバーの代わりに、Webサーバー間で同期/レプリケーションを使用することもできます(Chris Sの提案)。rsyncまたはDRBDは、コスト効率に優れた優れた選択肢です。


1

そこにキャッシングを入れない限り、私はNFSに対して反対することを勧めます。nginxキャッシュは何よりも優れていますが、Varnishの方が優れています。

そうは言っても、負荷が静的なコンテンツよりも動的なコンテンツに変化する場合、ローカルディスクからアプリファイルを提供することがより重要になります。

NFSを使用する場合は、冗長性があることを確認してください。


これには、アーキテクチャの変更が少し必要になる場合があります。Varnishのようなキャッシングレイヤーを使用することに加えて、NFS共有上にあるすべての静的ファイルに対してオリジンプルCDNセットアップを使用することもお勧めします。これにより、NFSバックエンドにかかる負荷が軽減されます。
Alpha01、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.