본 내용은 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%"> </td> </tr> <tr> <td>Session ID :</td> <td><%=session.getId()%></td> </tr> </table> </body> </html> |
참고사이트 : http://www.easywayserver.com/implementation-tomcat-clustering.htm