2016-03-23 10 views
2

こんにちは、Azureロードバランサで作業していて、配布モードをIPソースに設定しています。もちろん、複数のWebマシンを実行しています。MVCのAzureロードバランサ、IPソース、httpセッション

MVCアプリケーションでこれを使用しています。これまでのところ、テストでセッションを維持することに問題は見つかりませんでした。

私の質問は、

IPソースを使用してスティッキセッションを維持すると、クライアントは常にProcセッションを実行している正しいボックスに送信されますか?

この設定でピット・フォールズに問題がありますか?

私はどこでも明確な答えを見つけることはできません。

答えて

0

現在のベストプラクティスは、可能であればサーバー側のセッション状態を回避することです。一般的に時間の約95%を占めることになります。これを行うには、ASP.NET MVCアプリケーションでCookieベースの認証を使用します。また、セッション状態に保存されたほとんどのデータは、システムへの影響を最小限に抑えてキャッシュまたはロードすることができます。結局のところ、ネイティブにウェブはとにかくステートレスです。

IPソースベースのロードバランシングは問題ありません。必要に応じてサーバー側のセッション状態を使用しています。しかし、アプリケーションは本当にステートレスであることをサポートするように設計/構築されるべきです。つまり、セッションデータが存在しない場合は、適切にロードされます。可能な限り例外をスローせずにユーザーの要求を正常に処理して、ユーザーが自分の仕事を続けることができるようにしたいと思っています。

ステートレスなものにすることで、ラウンドロビンまたはパフォーマンスベースのロードバランシングのいずれかを使用して、アプリケーションのパフォーマンスを向上させることができます。

+0

ありがとうございました。はい、私は可能な限りステートレスとしてすべてを作ることに同意します。あなたが言っているように、その最後の5%は取り除くのが非常に難しいようです。長期的には、ロードバランサを通じてSourceIPを使用することはありません。他の共有キャッシュソリューションに移行しようとしています。 Regisキャッシュについて言及しました。これは、アプリケーションをクラウドに導入するための一時的なステップです。 – Inglor

+0

ええ、既存のアプリケーションでサーバー側のセッション状態をリファクタリングすることは本当に難しいことです。 Redisのようなものを使用することはアプリインスタンス間でキャッシュすることが可能ですが、必要とされるたびにデータをリロードするだけのパフォーマンスを評価します。パフォーマンスヒットがあなたの思うほど悪くない場合もありますが、完全に評価する必要があります。助けがあれば正しい答えを記入することを忘れないでください。ありがとう! –

関連する問題