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
はじめまして!
最近、こちらのサイトを知り、とっても勉強させて頂いています。
いつかは、記事の内容についてカッコよく技術的なコメントをしてみたいのですが、まだまだ先は遠いです。。
今日は技術的でもなんでもない、ちょっとしたご報告でコメントさせて頂きます。
普段はFirefoxを使っているのですが、たまたまネットワークのカテゴリでピックアップして記事を読んでいたら、途中から本文の文字が全て赤くなっていることに気づきました。
見ると、こちらの投稿記事のラストにある"追記"の8/5分のfontタグが閉じられていませんでした。
IEではうまく補正されていて表示は問題ないのですが、Firefoxでは追記より後のテキストが全て真っ赤になっていました。
重箱の角をつつくようなことで申し訳ないのですが、気づいてしまったので一応ご報告します。
なお、全ての記事・コメントに目を通していないので、既にご指摘や決着のついているお話でしたらすみません。
ついでに、等の独特のタグの書き方がとっても気になりました。
いままで気づきませんでしたが、ココログ(TypePad)の他のブログも見てみたら、タグの書き方が同様でした。
そういう仕様なんですね~。
プログラム上の都合だとは思いますが、なぜそんな作りになってしまうのか、まったく見当がつきません。
いずれはそういったことも仕組みがわかるようになりたいなぁ、なんて思いました。
Posted by: しお | November 14, 2008 09:53 AM
しおさん、コメントどうもありがとうございました。
早速修正させていただきました。
Posted by: sanonosa | November 14, 2008 10:07 AM
うわ!迅速なご対応ありがとうございました。
修正バッチリです^^
Posted by: しお | November 14, 2008 08:22 PM