はじめに
LiferayでElasticacheをセッション管理サーバとして使用した際にとんでもなくはまってしまったので、設定方法をまとめておきます。
なおElasticacheはredisではなくmemcachedにしています。
使用環境
Liferay
- liferay-portal-6.2-ce-ga2
セッションマネージャ
ElastiCache Cluster Client
- マネジメントコンソールのElasitcacheから「ElastiCache Cluster Client」を選択してDL
- もしくはgithubからCloneしてきて自分でビルドする
設定周り
Elasticache
- マネジメントコンソールに沿って構築するだけ
Liferay
- SetupAndConfigurationを読んで所定のjarをtomcat/libへ配置
- 今回は以下のファイルになりました
- memcached-session-manager-2.3.2.jar
- memcached-session-manager-tc7-2.3.2.jar
- AmazonElastiCacheClusterClient-1.1.1.jar
- Elasticacheへの接続設定をtomcat/conf/Catalina/localhost/ROOT.xmlに記載する
- 例えばこんな感じに
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
storageKeyPrefix="static:devperf"
memcachedNodes="<設定エンドポイント>"
memcachedProtocol="binary"
sticky="false"
sessionBackupAsync="false"
sessionBackupTimeout="300"
requestUriIgnorePattern=".*\.(gif|jpg|jpeg|png|wmv|avi|mpg|mpeg|mp4|htm|html|js|css|mp3|swf|ico|flv)$"
/>
kryo
- まだ試してないですが、使用する場合はおそらくtomcat/webapps/ROOT/libにjarを置くのではないでしょうか
まとめ
- ROOTをいじるという発想になるのに時間がかかった
- Liferayのドキュメントすくなすぎ案件
- githubのissueをLiferayという単語で検索すれば秒で解決した内容だった。もっとissueを検索しよう。
- tomcat/conf/context.xmlに設定を書いていた時はrequestUriIgnorePatternのおかげでひどい目にあった
- 合致するたびに新しいセッションが登録される