web-dev-qa-db-ja.com

ロードバランサーを使用したスティッキーセッションの欠点は何ですか?

IIS7マシンのWebファームがあり、うまく動作します。それらの前に F5 Big-IP ハードウェアロードバランサーがあり、これも正常に機能しています:)

alt text
(ソース: www.f5.com

現在、ASP.NET State Serviceを使用してOutProc状態を処理しています。これは、あらゆるタイプのセッション情報を維持するWebファームがある場合に必要です。

F5 Big-IPでsticky sessionsを使用できるかどうか疑問に思っていたため、OutProcからInProcに戻しましたか?もしそうなら、これの欠点は何ですか? InProcとOutProcの欠点を知っているので、それについて説明する必要はありません。 F5 Big-IPを使用しないスティッキーセッションの長所/短所に興味があります。

誰かが光や経験を流すことはできますか?

13
Pure.Krome

主な欠点は2つあります。

  1. 負荷が均等に分散されていません。スティッキーセッションは固定されるため、名前が付けられます。最初のリクエストは均等に分散されますが、かなりの数のユーザーが他のユーザーより多くの時間を費やすことになります。これらすべてが最初に単一のサーバーに設定されている場合、そのサーバーの負荷ははるかに大きくなります。通常、これが実際に大きな影響を与えることはなく、クラスター内により多くのサーバーを配置することで軽減できます。

  2. プロキシは、ユーザーを単一のIPに統合し、そのすべてが単一のサーバーに送信されます。これは通常、害を及ぼすことはありませんが、個々のサーバーの負荷を増加させることを除いて、プロキシはクラスター内でも動作できます。このようなシステムからF5への要求は、プロキシクラスター内の別のプロキシサーバーから送信された場合、必ずしも同じサーバーに送り返されるとは限りません。

AOLはある時点でプロキシクラスターを使用しており、ロードバランサーとスティッキーセッションに本当に夢中になりました。ほとんどのロードバランサーは、Cクラスのネット範囲に基づくスティッキーセッションを提供するか、F5の場合は、エンドノードをWebリクエストCookieに保存するCookieベースのスティッキーセッションを提供します。

Cookieベースのセッションは機能するはずですが、いくつかの問題があり、通常はIPベースのセッションを選択します。 BIG HOWEVER:私は主に内部アプリに取り組んでいます-DMZ数は異なる場合があります。

述べられているすべてのことで、私たちはスティッキーセッションとインプロセスセッションでF5の動作を実行しているサイトでいくつかの大きな成功を収めました。

また、SQLまたはout of procメモリサービスに格納されているセッションの代わりに、 MemcachedまたはVelocity のようなメモリ内分散キャッシングシステムの1つを確認することもできます。複数のサーバー間で実行できるインプロセスメモリの速度に近づきます。

15

私は最近、「ASP.NETアプリケーションのスケーラビリティの提供」に関するTechNetの優れた記事を読みました。それはそれぞれの可能な解決策の長所と短所に入りました。読んでください:

TechNet 2009年6月-ASP.NETアプリケーションにスケーラビリティを提供

5
rojay12

クリストファーからの優れた回答に加えて、スティッキーセッションは、冗長サーバーの2つの大きなメリット、つまり、メンテナンスのために1つ以上を停止する機能、およびシステム障害に直面したときの透過性を失ったことを意味します。

スティッキーセッションは、アプリケーションアーキテクチャやプログラミングが不十分であることを示す強力な指標と考えています。 「絶対に避ける」が私のモットーです。

4
womble