Tomcat におけるセッション永続化方法
https://thinkit.co.jp/cert/compare/14/1/3.htm1) PersistenceManager を使用 => 複数のサーバでファイルシステムを共有し、セッション永続先として用いる 2) JDBCManager を使用 => 複数のサーバでDataBaseを共有し、セッション永続先として用いる => 具体的な構築手順は、以下の関連記事を参照のこと。http://blogs.yahoo.co.jp/dk521123/36698011.html
3) catalina-cluster.jar を使用 => TCPソケットを使用したインメモリセッションレプリケーション。
使用上の注意
* セッションの書き込み間隔は、即時ではなく、最低でも設定上では1秒以上後にDBに書き込まれる => スティッキーセッション(Sticky Session)が必要になる 【書き込み間隔】 * 以下の計算式で、セッションの書き込み間隔が決まる maxIdleBackup(=0) + processExpiresFrequency(=1) * engine.backgroundProcessorDelay(=1) = 1[秒]
`設定値 | `意味 | `デフォルト値 | `最小値 |
maxIdleBackup | セッションが最後に使われてからバックアップされるまでの時間 [秒] | -1(非活性) | 0 |
processExpiresFrequency | セッション切れ頻度 | 6 | 1 |
backgroundProcessorDelay | tomcat停止時にセッションを保存するか | 10 | 1 |
用語整理
セッション永続化(Session Persistence)
* サーバ停止しても、再度起動時にそのセッション状態を継続して使用できるようにする
スティッキーセッション(Sticky Session)/セッション・アフィニティ(Session affinity)
sticky : くっついて離れない / affinity : 密接な関係* ロードバランサなどでサーバが複数台ある場合、 特定ユーザからのアクセスは特定のサーバのみに接続するように調整する => セッションが切れる事がない
ラウンドロビン(round robin)
* 分散対象サーバに均等にリクエストを振り分ける方式 * 各サーバで処理するリクエストの数が均等になるため、平均的にはサーバの負荷も均等になる
フェイルオーバー(failover)
* システム障害が発生した際、代替システムがその機能を引き継ぎ、処理を続行する仕組み
参考文献
公式サイト
http://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.htmlhttp://tomcat.apache.org/tomcat-8.5-doc/config/cluster.html
一般サイト
http://aaritoo.blogspot.jp/2010/06/tomcat.htmlhttp://weblabo.oscasierra.net/tomcat-cluster-session-replication-know-how/
http://thinkit.co.jp/free/compare/14/2/1.html
http://ameblo.jp/poponuki/entry-10864720393.html
http://ast.qt-space.com/web/tomcat_cluster.html
http://homepage1.nifty.com/y-osumi/works/code/tomcat_cluster/
http://thatsdone-j.blogspot.jp/2012/12/cloudstack-advent-calendar-2012-thatsdone.html
http://www.infoscoop.org/blogjp/2012/07/04/tomcat%E3%81%AE%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E7%92%B0%E5%A2%83%E3%81%A7session-replication%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
* スティッキーセッション
http://kayakuguri.github.io/blog/2015/04/30/heroku-sticky-session/
* Tomcatが発行するSet-CookieヘッダのPathパラメータをmod_proxyで書き換える
https://kadoppe.com/archives/2011/04/tomcat-cookie-path-mod-proxy.html