2011-07-20 11 views
0

初めてワニスを構成していますが、これまでのところ完全な回答を見つけることができなかった問題があります。ラウンドロビンディレクターでクッキー/セッションが提供されている場合のワニスキャッシュ

一言で言えば私の設定:

server0 - ワニス、 BE1 - apacheの、 BE2 - apacheの

ワニスは、ラウンドロビンで2つのバックエンドから引き出します。

私はセッション変数に現在の時刻を設定し、そのセッション変数と使用されたバックエンドのIPを表示する2番目のページにリダイレクトする単純なPHPスクリプトを設定しました。

私はこの半分を稼働させることができました。私は見ることができるものからセッション情報を渡していますが、ここで問題があります - バックエンドから返された情報は、生成されたバックエンドに固有です。したがって、返される時間は、be1またはbe2が最後のキャッシュに対して呼び出されたかどうかによって異なります。

セッション変数が処理するバックエンドに関係なくセッション変数が同じになるようにする方法がありますか?

答えて

6

これはセッションに関する一般的な問題です。クッキー(リクエストごとに送信される)にはセッションの識別子が含まれています。実際のセッションデータは、サーバーまたはデータベースに格納されます。これにはいくつかの解決策があります。例:

  1. 固定セッション。追加のクッキー変数(例えば、be = 1またはbe = 2)を設定するか、またはセッションIDが認識可能にバックエンド1または2に属しているようにします。次に、ワニスは、どのバックエンドサーバーにリクエストを送信するかを決定します。バックエンドがダウンした場合、セッションは失われます(「セッションフェイルオーバー」なし)
  2. データベース、memcached、またはすべてのバックエンドで共有されるその他のデータストアにセッションデータを格納します。
  3. セッションを使用せずにすべてをシリアル化しますあなたのデータをクッキーに入れてください。クライアントが信頼できない(クッキーはクライアントによって変更される可能性がある)ので、データが改ざんされていないかどうかを確認してください。あなたのデータに署名してください

あなたのコードと幸運を申請することができるいくつかのライブラリ/再利用可能なコードを探してください!

+1

ありがとうヒープ:)私はあなたに投票しますが、私は15人の担当者が必要です。それは私に本当に良い出発点を与えてくれました。 – drinxy

関連する問題