tomcat7 3대 세션클러스터 작업 정리

 


예상 구성도


apache 2.2.26, tomcat7.0.47 버젼 사용

L4 부하분산 알고리즘 Hash 알고리즘을 사용함


web서버는 html, js, 이미지를 처리 함

was서버를 세션 클러스터 처리하면, 유지보수 시 서비스 다운 없이 소스 반영하여 재기동이 용이하다.


tomcat7 공식문서에서는 멀티케스트를 통한 세션클러스터를 하는데, 관리부서에서 고정IP방향으로 설정을 원하여 Static 처리함


1. web서버 workers 셋팅

2. 개발 소스 세션 저장 모듈에 Serializable 처리.

3. 개발 소스 web.xml에 <distributable/> 처리.

4. was서버에 server.xml cluster 셋팅

5. 세션클러스터 test 작업

5-1. 셋팅 완료 되고 나면 was서버 한대씩만 기동하여 로그인 및 정상 동작 확인

5-2. was102,was103 다운 후 was101만 기동하여 로그인 

     was102 기동 후 1분정도 대기

     was101 다운 후 로그인이 안 팅기는지 확인

     was103 기동 후 1분정도 대기

     was102 다운 후 로그인이 안 팅기는지 확인

     (만약 팅기만 제대로 세션클러스터가 안 되는것임)


[샘플 wokers.properties ]

---------------------------------------------------------------------------------------------------

worker.was101.port=8909
worker.was101.host=192.168.100.101
worker.was101.type=ajp13
worker.was101.lbfactor=1

worker.was102.port=8909
worker.was102.host=192.168.100.102
worker.was102.type=ajp13
worker.was102.lbfactor=1

worker.was103.port=8909
worker.was103.host=192.168.100.103
worker.was103.type=ajp13
worker.was103.lbfactor=1

worker.homepage1.type=lb
worker.homepage1.sticky_session=true
worker.homepage1.balance_workers=was101,was102,was103

-----------------------------------------------------------------------------------------------------


[샘플 세션저장 모듈 Serializable 처리 ]

-----------------------------------------------------------------------------------------------------

public class LoginController implements Serializable

-----------------------------------------------------------------------------------------------------

[샘플 web.xml에 <distributable/>추가 처리]
-----------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <distributable/>

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

[샘플 was101 server.xml에 cluster 부분 작업]
-----------------------------------------------------------------------------------------------------
<!--CM_AUTOMATION_JVMROUTE-->
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="was101">
<!--CM_AUTOMATION_JVMROUTE-->

<!--CM_AUTOMATION_CLUSTER-->
        <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">
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.100.101"
                      port="4000"
                      autoBind="1"
                      selectorTimeout="5000"
                      maxThreads="16"/>

            <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.MessageDispatch15Interceptor"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"  >
                       <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="4000"
                                securePort="-1"
                                host="192.168.100.102"
                                domain="tomcat-cluster"
                                uniqueId="{0,1,2,3,4,5,6,7,8,1,0,2,4,0,0,0}"/>
                        <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="4000"
                                securePort="-1"
                                host="192.168.100.103"
                                domain="tomcat-cluster"
                                uniqueId="{0,1,2,3,4,5,6,7,8,1,0,3,4,0,0,0}"/>        
            </Interceptor>
          </Channel>
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
          <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.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
<!--CM_AUTOMATION_CLUSTER-->
-----------------------------------------------------------------------------------------------------

[샘플 was102 server.xml에 cluster 부분 작업]
-----------------------------------------------------------------------------------------------------
<!--CM_AUTOMATION_JVMROUTE-->
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="was102">
<!--CM_AUTOMATION_JVMROUTE-->

<!--CM_AUTOMATION_CLUSTER-->
        <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">
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.100.102"
                      port="4000"
                      autoBind="1"
                      selectorTimeout="5000"
                      maxThreads="16"/>
            <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.MessageDispatch15Interceptor"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"  >
                       <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="4000"
                                securePort="-1"
                                host="192.168.100.101"
                                domain="tomcat-cluster"
                                uniqueId="{0,1,2,3,4,5,6,7,8,1,0,1,4,0,0,0}"/>
                        <Member className="org.apache.catalina.tribes.membership.StaticMember"
                                port="4000"
                                securePort="-1"
                                host="192.168.100.103"
                                domain="tomcat-cluster"
                                uniqueId="{0,1,2,3,4,5,6,7,8,1,0,3,4,0,0,0}"/>        
            </Interceptor>
          </Channel>
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
          <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.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
<!--CM_AUTOMATION_CLUSTER-->
-----------------------------------------------------------------------------------------------------




댓글

이 블로그의 인기 게시물

xshell5 스크립트를 활용한 톰켓 서버 재기동

대한민국 전자결재 결재종류

올뉴쏘렌토 할로겐에서 led전조등