2

私が取り組んでいるアプリに Celery を使用することに興味があります。すべてが単純明快に思えますが、負荷分散された複数のアプリケーション サーバーを使用している場合に何をする必要があるかについて、少し混乱しています。すべてのドキュメントは、ブローカーがアプリケーションと同じサーバー上にあることを前提としています。現在、私のアプリケーション サーバーはすべて Amazon ELB の背後にあり、タスクはそれらのいずれかから取得できる必要があります。

これは私がする必要があると私が仮定するものです:

  • 別のインスタンスでブローカー サーバーを実行する
  • そのブローカー サーバーに接続するように各アプリケーション インスタンスを構成する
  • 各アプリケーション インスタンスもセロリの動作 (celeryd の実行) になりますか?

私の唯一の不満は、ブローカ インスタンスが停止した場合はどうなるかということです。2 つのブローカー インスタンスを実行して、1 つがダウンしても安全な方法はありますか?

私のようなセットアップで何をすべきかについてのヒントや情報は大歓迎です. 私は何かが欠けているか、何かを理解していないと確信しています。

4

3 に答える 3

3

今後の参考のために、RabbitMQ を使い続けることを好む人のために...

2 つ以上のインスタンスから RabbitMQ クラスターを作成できます。これらのインスタンスを ELB に追加し、celeryd ワーカーを ELB に向けます。正しいポートを接続していることを確認するだけで、すべて設定されているはずです。クラスターを実行するために、RabbitMQ マシンが相互に通信できるようにすることを忘れないでください。これは、本番環境で非常にうまく機能します。

ここでの 1 つの例外: タスクをスケジュールする必要がある場合は、celerybeat プロセスが必要です。何らかの理由で、celerybeat を ELB に接続できず、インスタンスの 1 つに直接接続する必要がありました。私はそれについて問題を開きましたが、解決されるはずです (まだテストしていません)。celerybeat 自体は 1 回しか存在できないため、すでに単一障害点になっていることに注意してください。

于 2012-05-01T12:50:49.673 に答える
1

あなたはすべての点で正しいです。

信頼できるブローカーを作成する方法: http://www.rabbitmq.com/clustering.htmlで説明されているように、クラスター化された rabbitmq インストールを作成します。

于 2012-04-11T06:15:06.880 に答える