2017-02-03 4 views
1

私はDockerでCeleryとRabbitMQ Gunicornを実行しています。Celeryはどのように新しいノードを発見しますか?

私の質問はこれです:私はセロリが分散処理用に設計されていることを理解しています。私が全くドキュメントを見ていないのは、同じLAN上に複数のマシン/ノードがあると仮定すると、どうやってお互いを発見するのでしょうか? RabbitMQは役割を果たしていますか?セロリのインスタンスはどういうわけかお互いを発見しますか?どこか適切なホストのリストはありますか?もしそうなら、どのように編集すればいいですか?

また、HTTP要求を処理するノードを1つだけ使用すると仮定しても、すべてのノードでgunicornを実行する必要がありますか。私はこれを尋ねます。なぜなら、ガンコーン開始コマンドでは、それは労働者の数の設定を持っているからです。また、この設定はそのノードにのみ適用されるか、または接続されたすべてのノードの最大合計として適用されますか?

編集: 最初の回答の後、私はこの作業を開始しました。私はドワーサーを使用して解決策を立てていることを明確にすべきであり、通常の群設定がうまくいかないことがわかります。もし私がその道を行くなら、少し違うものを使うこと。

明確にする:私は別のホストにセロリのワーカーを追加し、システムの容量を増やすために「メイン」ホストと通信できるようにする必要があります。誰かがこれを達成するための明確なプロセスやそれへのリンクを提供することができれば、最も役立つだろう。

私はこれを明確に表現していただきたいと思います。詳細情報が必要な場合はお知らせください。

ありがとうございます!

答えて

0

私はCeleryが分散処理用に設計されていることを理解しています。何が 私はまったくドキュメントを見ていない、同じLAN上にいくつかの マシン/ノードがあると仮定すると、どうやってお互いを発見するのですか? RabbitMQは役割を果たしていますか?セロリのインスタンスはどういうわけかお互いを発見しますか? 適切なホストのリストはどこかにありますか?もしそうなら、どのように編集すればいいですか?

セロリは、RabbitMQなどのメッセージ仲介システムを使用して動作する分散タスクキューです。

本質的にすべてのセロリ労働者が、RabbitMQなどの共有キューに接続します。マスターはキューにプッシュして作業を送ります。キューにも接続されている作業者は、キューから作業を取り除き、実行しようとします。それが完了すると(正常にまたはそれ以外の場合)、結果がキューに戻され、マスターが照会することができます。

このアーキテクチャでは、ホストのリストを追加する必要はなく、作業を「自動検出」します。それらを起動し、キューに通話できることを確認するだけです。

もう少し詳しい解説からもう少し詳しい説明があります。

Link to the architecture with a diagram

また、HTTP リクエストを処理するノードを1つだけ使用すると仮定しても、すべてのノードでgunicornを実行する必要がありますか。私は と尋ねます。これは、gunicornの開始コマンドでは、 人の作業者の設定があるためです。また、この設定はそのノードにのみ適用されますか? 、または接続されているすべてのノードの最大合計ですか?

いいえ、python経由でHTTPリクエストを処理するために使用しているノードだけで、すべてのノードでguicornを実行する必要はありません。セロリの労働者はguicornを必要としません。 Guicornのワーカー設定は、HTTPリスナープール内のワーカー数を示します。これは独立した独立したものであり、セロリが使用する一連の作業者とは無関係です。

+0

こんにちは、こんにちは、答えのおかげで、私は以前よりもずっと多くのことを知っています。私はしかし、いくつかの明確な質問があります。 「ホストのリストを追加する必要はなく、作業を「自動検出」するだけで、起動してキューと話すことができます。どうすればいいですか?それは私の元の投稿の基本的な本質です。私はどこかセロリインスタンスに伝えています。どのファイルですか?私はフォローする必要がある特定の形式はありますか?私はあなたが掲示したリンクをチェックしました。有益ですが、実際の設定例はありません。 もう一度おねがいします! – Bruce

関連する問題