« December 2007 | Main | March 2008 »

January 28, 2008

Cookieを利用したセッション維持(Sticky)の問題点

ロードバランサーの機能のうち、セッション維持は重要な役割な一つです。セッション維持を実現するための方法としては主に4つあります。


  • ソースIPアドレス利用
  • Cookie利用
  • SSL Session ID利用
  • URL利用

一番手軽なのはソースIPアドレスを利用する方法なのですが、NAT環境では全てのマシンが同じIPに見えてしまうのでこの方法が使えない場合も多いと思います。そんなわけで私はこれまでCookieを利用する方法をよく使っていました。しかし最近になってCookieを利用したセッション維持が失敗するケースが増えてきました。それはなぜか?

【Cookieを利用する方法の問題点】
Cookieを利用したロードバランスでは、セッション情報をCookieに書き込みます。ところでCookieの仕様をRFC2965で確認してみると


  • at least 300 cookies(少なくとも300個のCookieをサポートすること)
  • at least 4096 bytes per cookie(少なくとも4096バイトのCookieをサポートすること)
  • at least 20 cookies per unique host or domain name(少なくともユニークホストかドメインで20個のCookieをサポートすること)

と記されています。ということは、WEBブラウザーを使っているうちに一つのユニークホストもしくはドメインで20個以上のCookieが使われるか4KBの容量を超えてCookieが使われるとCookieを利用したロードバランスが失敗するようになります。


【解決方法はあるか?】
Cookieを利用したセッション維持を行うのにWEBブラウザーのCookie領域が使えないのであればそもそもCookieを利用したセッション維持が成り立ちません。もしそれが致命的なのであれば、URLを利用したセッション維持方法に変える等根本的な解決方法を模索する必要がありそうです。


※追記(2008.1.29)
どうやらCookieの最大サイズ制限容量はWEBブラウザによって異なるようです。
参考文献: http://www.teria.com/~koseki/memo/cookie/cookie_4k.html

※追記(2008.8.5)
Cookieを利用したセッション維持に失敗する理由として当初はタブブラウザーの問題と記しましたが、著者の誤解であることが判明しましたので、訂正させていただきます。申し訳ありませんでした。

| | Comments (3) | TrackBack (0)

January 18, 2008

ご質問大募集中です

慢性的なネタ切れのため(--;)、ご質問大募集中です。
この機会に何か聞いてみたいことがありましたらぜひ聞いてください。
答えられる範囲でがんばってお答えします!

http://sanonosa.bbs.coocan.jp/

| | Comments (5) | TrackBack (0)

« December 2007 | Main | March 2008 »