2013-03-23 10 views
6

私は、パフォーマンスが優れたスタンドアロンワーカーとHTTPアプリケーションを持っています。問題は、キャッシュをパージして再構築する必要があることがあるため、最大30秒間応答を停止することです。HTTP負荷分散用のメッセージバスを探しています

私はいくつかのロードバランサを調べましたが、どれもこの問題に対処していないようです。私はPerlbalといくつかのApacheモジュール(fcgidのような)を試していて、彼らはキャッシュを再構築するのに忙しい労働者に喜んでリクエストを送ります。

私のテイクはこれです:すべてのhttp要求が待ち行列に入れられている何らかの種類のメッセージバスソリューションではありません。メッセージを処理できるようにワーカーに任せていますか?

- あるいは、ワーカーが何度か応答できないことを考慮に入れることができるロードバランサ。

は後に追加されました:私は戦略は、労働者は、彼らが、忙しいロードバランサを知らせるために管理プロトコルを使用することができることをすることができることを認識していますが、そのソリューションはクルージようだと私はいくつかのエッジケースがあるであろうことを心配します偽のエラーが発生します。

+0

実際には上記のようなものを約束しているMongrel2プロジェクトが見つかりましたが、最新のバージョン(1.8)が不安定であると思われています(問題#148を参照)。 6ヶ月更新されました。 – mzedeler

+0

キャッシュ戦略を変更し、自己退治するLRUなどを使用することを検討してください。パージ/リビルドが30秒間すべてのものを落とす原因になっている場合、それを使用している方法では何かが間違っています。 – Kylar

+0

@Kylar:私は30秒が長すぎることに同意しますが、今のところ、その部分は変更するのが非常に難しいです。 – mzedeler

答えて

2

私はここで2つの戦略を見ています:期間中にワーカーをオフラインにすると、バランサーはそれを放棄します。逆の制御 - 労働者がバランサーからタスクを引き出すのではなく、バランサーがタスクを労働者にプッシュするのではなく、 Message Queueで簡単に実行できる2番目の戦略。

+0

最初の戦略は、バランサがオフラインであってもワーカーにリクエストを渡そうとするため、機能していないようです。バランサーが作業者を断念するのは速いかもしれませんが、タイムアウトがほんの数秒であっても、それはかなりの(読み込み:受け入れられない)遅延になります。 バスのソリューションが動作するはずです。恩恵は、これを行う既存の実用技術の方向に私を向けることができる誰にも与えられる。 – mzedeler

+0

@mzedelerバランサはワーカーのリストを保持できるので、キャッシュを再構築する前にワーカを登録解除するだけです。 – kan

+0

これは、私が今のところ決定したことですが、悪い設計のようなにおいがします。なぜなら、環境によって完全に緩和することが難しい競合状態に対処しなければならないからです。私はコントロールできません)。 – mzedeler

5

Amazon Web Services Load Balancerを使用している場合は、目的の結果が得られます。このキャッシュ・パージと再構築を実行している間は、Elastic Load Balancer(ELB)の背後にあるEC2インスタンスを正常でないとマークできます。

私が行うことは、たとえば、rebuild_cacheと呼ばれる各インスタンスの追加のエンドポイントを作成することです。したがって、ELBの背後に5つのインスタンスがある場合は、そのrebuild_cacheエンドポイント上の個々のインスタンス(ロードバランサを介さずに)にスクリプトを作成できます。このエンドポイントは3つのことを行います:

  1. インスタンスを不健全なものとしてマークします。ロードバランサは、正常性チェックが失敗した後に正常でないことを認識します(正常性チェックのタイミングとしきい値はAWS Web Consoleから設定可能です)。
  2. キャッシュパージを実行して再構築
  3. インスタンスを正常とマークします。ロードバランサは、インスタンスのヘルスチェックを実行し、正常なヘルスチェックの必要な量だけ健康になったらトラフィックを送信します(このスレッショルドはELBヘルス設定によって定義されます)。
+0

私は賞金制度に賞金の半額を授与させていただきます。私が恩恵を授与していない理由は、あなたが本当に質問に記載されている要件に合ったメッセージング技術を指さないということです。しかしそれを除けば、私はあなたの意見に感謝します。 – mzedeler

+0

ありがとう、ええ、これは間違いなくあなたのポストの "代替"セクションに入った。私はこの正確な設定をしているので、私は入力を提供すると思った、それは素晴らしい作品です。 – Drewch

関連する問題