Posts
read more
Tomcat 세션 클러스터링 가이드: 고가용성(HA) 환경의 세션 복제 설정
서론
서비스 규모가 커지면 L4나 L7 로드 밸런서를 통해 여러 대의 WAS(Tomcat)를 운영하게 됩니다. 이때 사용자의 세션 정보가 특정 서버에만 남아있다면, 로드 밸런싱 과정에서 세션 끊김 현상이 발생합니다. 이를 해결하기 위해 서버 간 세션을 동기화하는 세션 클러스터링(Session Clustering) 설정이 필수적입니다.
1. Tomcat 기본 설정 (server.xml)
Tomcat은 멀티캐스트(Multicast) 방식을 이용한 자체 세션 복제 기능을 제공합니다. server.xml의 <Host> 태그 내부에 <Cluster> 설정을 추가합니다.
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
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"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
</Channel>
</Cluster>
2. 애플리케이션 활성화 (web.xml)
클러스터링 대상이 되는 웹 애플리케이션의 WEB-INF/web.xml 파일에 반드시 다음 태그를 추가해야 합니다. 이 태그가 없으면 세션 복제가 작동하지 않습니다.