반응형
톰캣을 이용한 세션 공유 설정
Apache, L4 등을 이용한 load balancing이 되어 있다는 전제하에 Tomcat 세션 공유를 진행합니다.
필요 Port (방화벽 오픈 필요)
PORT | TCP/UDP | 용도 |
---|---|---|
45564 | TCP,UDP | 세션 공유 |
4000 | TCP | 세션 수신 |
- 하나의 서버에서 작동 시 4000 외 사용할 포트가 필요합니다.
Server.xml 수정
<!-- apache jk_mod의 경우 jvmRoute값을 이용하여 사용 was 판단 -->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="was1">
<!-- channelSendOptions 비동기 세션 공유-->
<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" -- 자신의 IP
port="4000" -- 수신하기 위한 port
autoBind="10" -- 수신 포트에 실패 할 경우 확장할 수 10일 경우 4000 ~ 4010
selectorTimeout="5000" -- 대기 시간
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
...
</Engine>
- channelSendOptions 옵션(비동기, 동기방식, 멀티캐스트 등 옵션)
- https://tomcat.apache.org/tomcat-8.5-doc/config/cluster.html#SimpleTcpCluster_Attributes
(비동기: 8) - DeltaManager
모든 노드에 동일한 세션 복사, 정보가 변경될 때마다 복사- notifyListenersOnReplication: 다른 tomcat에서 세션이 생성/소멸 이벤트 수신 여부
- expireSessionsOnShutdown: tomcat서버가 shutdown도리 때 모든 노드의 세션을 expire 여부(default false)
web.xml 수정
<web-app>
...
<!-- 세션 복제를 위해 필요 -->
<distributable/>
</web-app>
참고
클러스터 구성: http://tomcat.apache.org/tomcat-8.5-doc/config/cluster-manager.html
ChannelSendOptions: https://tomcat.apache.org/tomcat-8.5-doc/config/cluster.html#SimpleTcpCluster_Attributes
UDP 사용안 될 경우: https://lalalaho.tistory.com/37
#tomcat #세션공유 #loadbalancing #cluster
반응형
'FullStack > 41. WEB.WAS' 카테고리의 다른 글
[Tomcat] logs 경로 변경 (0) | 2021.02.09 |
---|---|
[취약점] Apache, Tomcat 불필요한 웹 메서드 허용 (0) | 2020.12.08 |
[Tomcat] WAS JDBC를 사용한 오라클 이중화 설정 (0) | 2020.10.14 |
CVS-2020-1938로 인한 Tomcat 8.5.49 -> 8.5.51 변경 (0) | 2020.03.27 |
Apache + Tomcat 로드밸런싱 (1) | 2020.01.30 |