본문 바로가기

WAS/TOMCAT

Session Clustering (멀티캐스트 아닌 방식)

728x90

tomcat - server.xml

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="kb11">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <Cluster channelSendOptions="8" channelStartOptions="3" className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
        <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <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="192.168.56.171" <!--본 장비 IP-->
              port="4055" <!--클러스터링에 사용할 포트-->
              autoBind="0"
              selectorTimeout="5000"
              maxThreads="6"/>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor" staticOnly="true"/>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor" />
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
            <Member className="org.apache.catalina.tribes.membership.StaticMember"
              host="192.168.56.102" <!--세션 클러스터링 할 장비의 IP--
              port="4055" <!--세션 클러스터링 할 장비에서 클러스터링에 사용할 포트-->
              uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2}" />
          </Interceptor>
         </Channel>
       <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt" />
       <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
       <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
      </Cluster>

 

성공적으로 설정이 되면 다음과 같은 로그를 확인할 수 있다.

21-Aug-2024 22:22:37.633 INFO [main] org.apache.catalina.ha.session.DeltaManager.startInternal Register manager [localhost#/mytest] to cluster element [Engine] with name [Catalina]
21-Aug-2024 22:22:37.633 INFO [main] org.apache.catalina.ha.session.DeltaManager.startInternal Starting clustering manager at [localhost#/mytest]
21-Aug-2024 22:22:37.640 INFO [main] org.apache.catalina.ha.session.DeltaManager.getAllClusterSessions Manager [localhost#/mytest], requesting session state from [org.apache.catalina.tribes.membership.StaticMember[tcp://192.168.56.102:4055,192.168.56.102,4055, alive=0, securePort=-1, UDP Port=-1, id={0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 }, payload={}, command={}, domain={}]]. This operation will timeout if no session state has been received within [60] seconds.

 

 

apache web server - workers.properties

#####################
##01. worker templates
#####################
#
worker.template.type=ajp13
worker.template.lbfactor=1
# worker.template.socket_timeout 서버간 TIMEOUT --> 단위 : s
worker.template.socket_timeout=300
# worker.template.reply_timeout 브라우저 TIMEOUT --> 단위 : ms
worker.template.reply_timeout=300000
worker.template.retries=0
worker.template.ping_mode=A
worker.template.recovery_options=3
worker.template.connection_pool_minsize=25
worker.template.connection_pool_size=25
#
##----------------------------------------------------------
#
#####################
##02. worker list
#####################

#worker list
worker.list=jkstatus,workers

##worker jkstatus
worker.jkstatus.type=status

##worker
worker.workers.balance_workers=kb11,kb12
#worker.workers.balance_workers=worker11,worker12
worker.workers.type=lb
worker.workers.method=Session
worker.workers.session_cookie=JSESSIONID
worker.workers.retries=0

#----------------------------------------------------------

####################
#03. node list
####################

#node1 - jvmRoute로 선언한 이름을 써주자
worker.kb11.reference=worker.template
worker.kb11.host=192.168.56.171
worker.kb11.port=8009

#node2 - jvmRoute로 선언한 이름을 써주자
worker.kb12.reference=worker.template
worker.kb12.host=192.168.56.102
worker.kb12.port=8009


#----------------------------------------------------------

'WAS > TOMCAT' 카테고리의 다른 글

[Tomcat9] 마이너 버전 업그레이드 정리  (5) 2025.07.21
[tomcat9] web application 배포에 관련하여  (3) 2025.07.18
appBase, docBase  (0) 2024.08.07
톰캣 - mysql 8 JNDI 연동  (0) 2024.08.07
톰캣 멀티 인스턴스 구성  (0) 2024.08.07