2011-06-23 5 views
7

私の質問hereと同様に、複数のamazon EC2インスタンスを設定してマルチプロセッシングを行うようにしています。私は、セラーを使って労働者を管理することを考えていました。ローカルコンピュータをホストにしてEC2インスタンスでセロリを使用する人はいますか?ローカルコンピュータをホストとするセロリワーカーとしてEC2インスタンスを設定する

誰かが助けてくれる良い提案、チュートリアル、アドバイスなどありますか?私はdjangoでいくつかの単純な非同期プロセスを行うためにセロリを使用しましたが、この規模のものは何もありません(ワーカーとホストは同じマシン上にありました)。

また、処理の大半は「ファイルベース」(つまりファイルの読み書き)です...セロリでファイルの内容を漬けて転送するほうがよいと思いますか(ほとんどのファイルは1-2kbですEC2インスタンス間でファイルシステムをミラー化して、結果を返すようにするだけです(通常0.5kbのテキストです)。

+1

Celery-usersメーリングリストで[同じ質問](https://groups.google.com/forum/?fromgroups=#!topic/celery-users/EnJGOK7kf_Y)を尋ねましたが、まだ私は待っています答えのために。あなたは最終的にそれをやることに決めた方法についてコメントできますか? –

+1

@ andres.rianchoあなたのアプリケーションインスタンスのコピーを作成し、すべてのコピーをあなたのメッセージブローカでリッスンします。あなたはappマシン上でセロリを無効にし、他のすべてのコピーでセロリを実行することができます。このようにして、あなたのアプリケーションインスタンスはそれをキューに入れ、コピーはタスクを消費します – noahandthewhale

答えて

1

Amazon EC2でのタスク管理にAmazon SQSを使用しました。非常にスケーラブルなソリューションです。私が見つけたように、BotoはAmazonサービスを管理するための最高のライブラリです。

大量の小さなファイルを格納するために、MongoDB GridFSを使用すると、ローカルファイルのギガバイトを保存することができます。私はMongoDBを使い、そのような仕事のために長官のパフォーマンスを得ました。唯一の問題は - MongoDBの32ビットアーキテクチャでは非常に限られています。 Amazonはマイクロインスタンスを持っていて、次に64をサポートする大規模なインスタンスを持っています。マイクロインスタンスはCPUとメモリによって非常に制限されており、必要に応じて大きく設定する必要があります。

私のタスク上のマイクロインスタンスは、問題なく最大10ギガバイトの読み書きが可能でした。

また、スポットインスタンスをご覧ください。オンデマンドの約3倍のコストがかかり、バックグラウンド処理には非常に適しています。

関連する問題