인디노트

톰캣 세션 클러스터링 내가 적용한 것 본문

개발 플랫폼 및 언어

톰캣 세션 클러스터링 내가 적용한 것

인디개발자 2018. 11. 24. 15:32

https://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.html

 

server.xml


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

                channelSendOptions="8">

         <Manager className="org.apache.catalina.ha.session.DeltaManager"

                  expireSessionsOnShutdown="false"

                  notifyListenersOnReplication="true"/>

           <!-- 멀티캐스트 포트(45564) 필요에 따라 변경 -->

         <Channel className="org.apache.catalina.tribes.group.GroupChannel">

           <Membership className="org.apache.catalina.tribes.membership.McastService"

                       address="228.0.0.4"

                       port="45564"

                       frequency="500"

                       dropTime="3000"/>

           <!-- replication 메시지 수신 포트는 4000 - 4100 사이, 같은 서버 안에 여럿의 톰캣이라면 address 에 auto 를 입력 -->

           <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

                     address="192.168.0.116"

                     port="4001"

                     autoBind="100"

                     selectorTimeout="5000"

                     maxThreads="6"/>


           <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"/>

         </Channel>


         <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

                filter=""/>

         <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

         <!-- war 를 하나에 반영하면 클러스터에 자동으로 배포되는 FarmWarDeployer 기능시에만 필요

         <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>



방화벽

-A INPUT -m state --state NEW -m tcp -p tcp --dport 45564 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --dport 45564 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 4000:4100 -j ACCEPT



web.xml 에 추가 : <distributable/>

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">

  <display-name>KCSAgent</display-name>

  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  <distributable/>

</web-app>




반응형
Comments