5

8台のマシンで実行されているRailsアプリでペーパークリップ画像のアップロードを機能させるにはどうすればよいですか(負荷分散)?

ユーザーはアプリに画像をアップロードできます。画像はいずれかのマシンに保存されます。ユーザーが後で画像をリクエストしましたが、別のマシンからリクエストされているため、画像が見つかりません。

このタイプの問題の回避策は何ですか?AWSやクラウドサービスを利用できません。画像は社内に保存する必要があります。

ありがとう。

4

2 に答える 2

8

解決策の 1 つは、NFS を使用して共有フォルダーをマウントすることです。この共有フォルダーは、public/systemペーパークリップ イメージを含むフォルダーのルートになります。

ただし、すべてを機能させるために考慮すべき点がいくつかあります。

  • アセットのみを含む専用サーバーを使用します。これにより、ハード ドライブがペーパークリップ イメージ専用になります。
  • NFS は高価になる可能性があります。これを使用して、アプリ サーバーからアセット サーバーのみにファイルを書き込みます。アプリケーション サーバーに NFS 経由で実行するように依頼せずに、アセット サーバーからすべての画像を直接取得するように、ロード バランサー、リバース プロキシ、または Web サーバーを構成する必要があります。
  • もちろん、資産サーバーにはRAIDシステムをお勧めします
  • 同じ仕様の 2 つ目のアセット サーバーをお勧めします。バックアップ サーバーとして機能させ、定期的にクリップ イメージを再同期することができます。マスター アセット サーバーがダウンした場合は、このサーバーに切り替えることができます。
  • 共有 NFS フォルダーをマウントする場合は、softオプションを使用し、高速ローカル ネットワーク接続経由​​でマウントしますmount -o soft 10.0.0.1:/export/shared_image_folder。このオプションを指定せずsoftにアセット サーバーがダウンした場合、Ruby インスタンスはサーバーが起動するまで待機し続けます。すべてが行き詰まり、ウェブサイトがダウンします。これは難しい方法で学びました...

これらは、NFS を使用するための一般的なガイドラインです。何十万もの画像を含む非常に大規模な制作 Web サイトで使用していますが、問題なく動作します。

于 2012-11-27T22:41:40.077 に答える