2011-08-09 17 views
3

同じデータベースを持つ同じDjangoアプリケーションを提供する2つのWebサーバーで、2つのサーバー間のすべての要求のバランスをとることができました。Djangoロードバランシング:ユーザーメディアを共有するには?

セッションはDBに格納されます。静的メディアは、コンテンツ配信ネットワーク(CDN)を使用した場合と同じように処理できます。

しかし、アップロードPOSTを受信するウェブサーバーのローカルファイルシステムにあるユーザーがアップロードしたメディアファイルはどうすれば処理できますか?明らかに、2番目のサーバーにはこれらのファイルがありません。

信頼性の高いソリューションとは何ですか?いくつかの3番目のサーバーにNFS? Unisonを常時実行しているか、Mercurial oder gitのようなDVCSを使用していますか?

答えて

2

静的メディアは、コンテンツ配信 ネットワーク(CDN)を使用した場合と同じように処理できます。

あなたの答えがあります。ユーザーメディアをCDNにアップロードします。 S3またはCloudfilesストレージバックエンドについては、django-storagesをチェックアウトしてください。

+1

S3やCloudfilesを唯一のメディアストレージとサービス機能として使用し、ファイルを自分で配信しないことを考えていますか? – Paul

+2

はい、正しいです。ロードバランサが1つの場合は、すべてのメディアを(NFSなどを介して)そこに置くことができますが、複数のロードバランサを使用すると、同じ問題が戻されます。静的およびアップロードされたメディアにS3を使用することは、長期的にはるかにスケーラブルなソリューションです。 –

+0

OKありがとう、それは私が欲しいものではない(唯一のクラウドストレージに依存しない)が動作するだろう! – Paul

1

私は個人的に3番目のサーバーにNFSを使用し、要求されたときにすべてのメディアに直接配信します。これにより、NFSの使用量がアップロードフェーズに減少し、メディアサーバーを静的資産用に最適化できます。

関連する問題