본문 바로가기
WAS/TOMCAT

5. tomcat 클러스터링

by coldplayer83 2023. 7. 14.
728x90

https://tomcat.apache.org/tomcat-9.0-doc/config/cluster-membership.html

 

1. server.xml에서 Engine 또는 Host 태그 내부에 Cluster 설정

Engine에 배치 : 톰캣의 모든 가상 호스트에서 클러스터링을 지원하고 메시징 구성 요소를 공유

클러스터는 각 세션 관리자의 호스트 이름을 관리자 이름에 추가하여 이름은 같지만 두 개의 다른 호스트 내에 있는 두 개의 컨텍스트를 구별할 수 있다

 

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

	<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
    	channelSendOptions="8"
        channelStartOptions="3">
        <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.101"
               port="3100"
               autoBind="0"
               maxThreads="6"
               selectorTimeout="5000" />
          <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"
                 port="3100"
                 host="192.168.56.102"
                 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"/>
        <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.ClusterSessionListener"/>
      </Cluster>

<Engine>

jvmRoute : 사용 was 이름

각 JSESSION_ID의 끝에 tag를 붙이고자 한다면 jvmRoute 요소를 추가
ex) <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
=> 5364B126FE79474FE1CA714D4D104825.tomcat1

 

<Cluster>

channelStartOptions="3" : 멀티캐스트 사용 x

 

<Receiver>

address : 현재 장비 ip

port : 수신 port

 

<Member>

port : 클러스터링할 대상 서버의 수신 port

host : 클러스터링할 대상 서버의 ip

uniqueId : 정적 멤버에 대한 uniqueId. 값은 문자열 형식의 16바이트 배열

ex) {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}

 

!! Interceptor는 위의 순서대로 작성해야 에러가 발생하지 않는다

 

2. web.xml 설정

</web-app> 태그 안에 <distributable/> 태그를 추가

<web-app>
	<distributable/>
</web-app>

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

6. tomcat 클러스터링 2  (0) 2023.07.24
4. Connector 속성 정의 (server.xml)  (0) 2023.07.14
3. 서비스 포트 변경  (0) 2023.07.14
2. JAVA 버전 변경  (0) 2023.07.14
1. 설치 및 버전 확인  (0) 2023.07.14