Sticky sessionの内部仕様をちょっと誤読していた模様。無事、動きました。サーバー2台だけだけどね。
AjpRails 0.0.3としてリリース。これでRails勉強会でロードバランサの実演ができる。
jk connectorはsticky sessionのためのクッキーのsuffixがworker名と同一であることを要請する。
- TomcatでいうjvmRoute, mod_jk2でいうtomcatidってやつね。mod_jkは単純にworker名とsuffixが同であると仮定するらしい。
- Set-cookie時にはconnectorはこれを関知しない
- request時に、クッキーJSESSIONID(この名前はコンパイル時に埋め込まれている)のsuffixを見て、一致するworkerがあればそちらへ優先して転送する
- 同一名のworkerがなければ、ラウンドロビン等、設定された通常の方式に従う。
jk connectorはrequest時に一切、クッキーを処理しないので、sticky sessionをサポートするAJPサーバーは自分のsuffixを知っていて、suffix込みで適宜処理の上セッションのアイデンティティを同定しなければならない。(CGI::Sessionは当然suffixなんか知らないから渡す前にsuffixをおとさなきゃいけないんだけれど、これを見落としていた)。