- 세션 클러스터링 샘플 : tomcat.tar.gz
핵심 개념
- Multicast
- Session Manager in Tomcat
Multicast
Multicast는 특정 수신자 그룹에게 단순 메시지를 전송하는 방법이다.
Tomcat에서는 Apache Tribes Pear-to-pear communication framework 를 사용한다.
Tomcat 세션 관리자 종류
Standard Manager |
기본 세션 관리자 |
Persistent Manager |
File Store, JDBC Store 두가지 방식이 있음 |
Delta Manager | 다른 인스턴스와 세션을 복제(공유) 한다. |
Backup Manager | 다른 인스턴스와 세션을 복제(공유) 한다. |
세션 복제 설정 방법
- multicast routing
- conf/server.xml <Cluster> 추가
- web.xml <distributable /> 추가
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001" <!-- 한 서버에 여러 Tomcat를 구동할 경우 Port 번호를 다르게 설정 -->
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
참고:
- 세션 공유가 되지 않을 경우 방화벽을 확인 해 볼 필요가 있다.(multicast 는 UDP 통신을 한다.)
- 하나의 서버에 다수의 Tomcat를 구동할 경우 <Receiver> 의 Port는 각 서버마다 다르게 설정 해야 한다.
- Creation of SecureRandom instance for session ID generation 할 때 시간이 올래 걸리면
-Djava.security.egd=file:/dev/./urandom 설정을 추가 한다.
'서버 설정' 카테고리의 다른 글
Centos 6.5 에서 6.6 업그레이드 이후 문제점 (0) | 2014.11.09 |
---|