톰캣 세션 공유 설정

1.7  톰캣 세션 공유 설정

  1. 톰캣 1번 서버에 접속 한다.

root@cbw:~# docker exec -it tomcat9 bash

bash-4.2# ls

BUILDING.txt  CONTRIBUTING.md  LICENSE NOTICE README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work

bash-4.2# 

환경 설정 파일을 열어서 환경 파일을 수정한다.

cd conf

vi server.xml

148 라인 밑에 톰캣2번 서버와 연결될 수 있게 클러스터 설정을 하고 저장을 한다.

<!--
  <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.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
      address="10.10.0.10"          
      autoBind="0"
                    className="org.apache.catalina.tribes.transport.nio.NioReceiver"
maxThreads="6"
port="4102"
selectorTimeout="5000"
  /> <!-- server1 information -->
<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">
<Member                        className="org.apache.catalina.tribes.membership.StaticMember"
    port="4102"
    host="10.10.0.11"          
    uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2}"
/> <!-- tomcat2 connection -->
</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>

저장하고 컨테이너를 빠져 나온다. Ctrl + P + Q

톰캣 2번 서버도 똑같이 설정 한다.

docker exec -it tomcat9-2 bash

vi 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.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
    address="10.10.0.11"           
    autoBind="0"                           

    className="org.apache.catalina.tribes.transport.nio.NioReceiver"
    maxThreads="6"
    port="4102"
    selectorTimeout="5000"
  /> <!-- tomcat server2 information -->
<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">
<Member                          className="org.apache.catalina.tribes.membership.StaticMember"
  port="4102"
  host="10.10.0.10"          
  uniqueId="{0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1}"
/> <!-- tomcat1 server -->
</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>

저장후 톰캣 도커 컨테이너를 재 기동 한다.

톰캣 도커를 빠져 나온다  ctrl + P + Q

도커 재기동 : docker restart tomcat9, docker restart tomcat9-2

설정이 끝났으니 아파치 웹서버에서 세션이 공유 되는지 확인한다.

url : http://192.168.0.120/session.jsp

세션카운트도 34, 35 잘 올라간다 공유가 안될 경우 카운트는 항상 1이다 

HostName 에 서버 정보도 tomcat, tomcat2 번 서버로 로드밸런싱 도 잘 된다.

Session ID 도 1번 서버와 2번 서버가 동일하게 공유가 되어서 변하지 않는것을 확인 할수 있다.

Session ID : E84A111CF0590BF7F39764A5DA88F98E

이렇게 해서 아파치 웹서버 와 톰캣 서버 2중화 설정이 끝났다.

아파치 서버 경로에는 html이나 이미지와 같이 변경이 되지 않는 소스를 올리고 와스 서버에는 jsp나 자바 클래스 같이 데이터를 가공하여 변경이 이루어 지는 동적인 파일을 올리면 된다. 서버 설정 끝

다음은 아파치와 Wildfly 서버 이중화 세팅을 해 보겠다.

 

'IT > 프로그램' 카테고리의 다른 글

Wildfly 테스트 소스 작업  (0) 2024.01.29
도커 우분투22.04에 Wildfly 설치  (0) 2024.01.29
톰캣2번 서버 아파치 연동 설정  (0) 2024.01.29
톰캣 환경 셋팅  (0) 2024.01.29
아파치 톰캣 연동  (0) 2024.01.29