WHEREIS

본 내용은 8.5.53에서 테스트 되었습니다.

 

backup manager 모드의 경우, 2개의 각기 다른 인스턴스를 클러스터링 설정할 때 유용하다
인스턴스의 수가 많을 경우 Delta Manager 를 이용하면 좋겠다. -- 오히려 안좋다는 사례가 많다

backup manager 의 설정은 다음과 같이 진행하면 된다.

 

server.xml 내용

  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
  -->

  <Cluster 
        channelSendOptions="8" 
        channelStartOptions="3" 
        className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> 
    <Manager className="org.apache.catalina.ha.session.BackupManager"
        expireSessionsOnShutdown="false"
        notifyListenersOnReplication="true"
        mapSendOptions="6"/>
  <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 
        address="192.168.230.81"   <!-- 각 서버의 IP 를 넣어준다. -->
        autoBind="0" 
        className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
        maxThreads="6" 
        port="5000" 
        selectorTimeout="5000" 
   /> 
        <!-- <Interceptor className="com.dm.tomcat.interceptor.DisableMulticastInterceptor" /> --> 
        <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.StaticMembershipInterceptor"> 
   <LocalMember className="org.apache.catalina.tribes.membership.StaticMember"
              uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}"/>  <!-- 이값은 아래 uniqueid 와 반대로 -->
        <Member 
            className="org.apache.catalina.tribes.membership.StaticMember" 
            port="5000" 
            host="192.168.230.82"    <!-- 그 서버 외 멤버에 사용할 다른 서버의 IP 를 적어준다. -->
            uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2}"   <!-- 이 값은 서로 틀려야 한다 -->
        /> 
   </Interceptor> 
         <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>  
  </Channel> 
  <Valve 
    className="org.apache.catalina.ha.tcp.ReplicationValve" 
    filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" 
  /> 
         <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" /> 
  </Cluster>

 

tomcat 설치경로의 webapps/ROOT/WEB-INF/web.xml

 

 <distributable /> <!-- 한줄 추가--> 
</web-app>

 

아래와 같이 test.jsp 를 만들어 놓고, 도메인으로 접속하여 (같은 도메인)
각 서버의 인스턴스를 내려보면서 테스트하여 같은 세션 아이디가 나오면 정상이다.

 

webapps/ROOT/test.jsp

<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
</body>
</html>

 

참고사이트 : http://www.easywayserver.com/implementation-tomcat-clustering.htm

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band
loading